LiVES 3.2.0
multitrack.h
Go to the documentation of this file.
1// multitrack.h
2// LiVES
3// (c) G. Finch 2005 - 2017 <salsaman+lives@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
13
14#define CLIP_THUMB_WIDTH ((int)(72.*widget_opts.scale))
15#define CLIP_THUMB_HEIGHT ((int)(72.*widget_opts.scale))
16
17#define CLIP_LABEL_LENGTH ((int)(20.*widget_opts.scale))
18
19#define BLOCK_THUMB_WIDTH ((int)(40.*widget_opts.scale))
20
21#define MT_PLAY_WIDTH_SMALL ((int)(320.*widget_opts.scale))
22#define MT_PLAY_HEIGHT_SMALL ((int)(216.*widget_opts.scale))
23
24#define MT_PLAY_WIDTH_EXP ((int)(432.*widget_opts.scale))
25#define MT_PLAY_HEIGHT_EXP ((int)(324.*widget_opts.scale))
26
27#define MT_CTX_WIDTH ((int)(320.*widget_opts.scale))
28#define MT_CTX_HEIGHT ((int)(220.*widget_opts.scale))
29
30#define FX_BLOCK_WIDTH ((int)(80.*widget_opts.scale))
31#define FX_BLOCK_HEIGHT ((int)(20.*widget_opts.scale))
32
33#define MT_TRACK_HEIGHT ((int)(35.*widget_opts.scale))
34
35#define TIMECODE_LENGTH 14
36
37#define TIMELINE_TABLE_COLUMNS 40
38
39#define MENUBAR_MIN 1024
40
41#define PEB_WRATIO 3.
42#define PEB_HRATIO 3.
43
44#define AMIXER_WRATIO 2. / 3.
45#define AMIXER_HRATIO 2. / 3.
46
48
49#define MT_INOUT_TIME 10000
50
51#define BLOCK_DRAW_SIMPLE 1
52#define BLOCK_DRAW_THUMB 2
53#define BLOCK_DRAW_TYPE BLOCK_DRAW_THUMB
54
55#define SELBLOCK_ALPHA 0.6
56
57#define DEF_TIME 120
58
59#define DEF_AUTOTRANS "simple_blend|chroma blend|salsaman"
60
61typedef struct _mt lives_mt;
62
63typedef struct _track_rect track_rect;
64
65typedef struct _mt_opts mt_opts;
66
67typedef struct _lives_amixer_t lives_amixer_t;
68
69typedef enum {
74
75typedef enum {
77
78 // not implemented yet
83
84typedef enum {
89
90typedef enum {
91 // undo actions
96
97 // minimal event_list
103
104 // full backups of event_list
110 MT_UNDO_INSERT_GAP = 1029
112
113typedef enum {
120
121typedef enum {
131
132typedef enum {
137
138typedef enum {
143
144typedef enum {
145 // block state
149
150struct _mt_opts {
151 boolean set;
152 boolean move_effects;
154 boolean snap_over;
158 boolean show_audio;
159 boolean ign_ins_sel;
161 boolean insert_audio;
164 boolean gang_audio;
167 boolean render_vidp;
168 boolean render_audp;
171 boolean show_info;
174 double ptr_time;
176};
177
178struct _mt {
179 // widgets
180 LiVESWidget *menubar;
181 LiVESWidget *top_vbox;
182 LiVESWidget *top_vpaned;
183 LiVESWidget *xtravbox;
184 LiVESWidget *hbox;
185 LiVESWidget *play_blank;
186 LiVESWidget *poly_box;
187 LiVESWidget *clip_scroll;
188 LiVESWidget *clip_inner_box;
189 LiVESWidget *in_out_box;
190 LiVESWidget *in_hbox;
191 LiVESWidget *out_hbox;
192 LiVESWidget *in_frame;
193 LiVESWidget *out_frame;
194 LiVESWidget *in_image;
195 LiVESWidget *out_image;
196 LiVESWidget *scrolledwindow;
197 LiVESWidget *context_box;
198 LiVESWidget *context_scroll;
199 LiVESWidget *sep_image;
201 LiVESWidget *tl_eventbox;
202 LiVESWidget *timeline_table;
203 LiVESWidget *timeline;
204 LiVESWidget *timeline_eb;
205 LiVESWidget *timeline_reg;
206 LiVESWidget *infobar;
207 LiVESWidget *stop;
208 LiVESWidget *rewind;
209 LiVESWidget *sepwin;
210 LiVESWidget *mute_audio;
211 LiVESWidget *loop_continue;
212 LiVESWidget *insert;
213 LiVESWidget *audio_insert;
214 LiVESWidget *delblock;
215 LiVESWidget *clipedit;
216 LiVESWidget *vpaned;
217 LiVESWidget *hpaned;
218 LiVESWidget *scrollbar;
219 LiVESWidget *playall;
220 LiVESWidget *playsel;
221 LiVESWidget *jumpnext;
222 LiVESWidget *jumpback;
223 LiVESWidget *mark_jumpnext;
224 LiVESWidget *mark_jumpback;
225 LiVESWidget *render;
226 LiVESWidget *prerender_aud;
227 LiVESWidget *message_box;
228 LiVESWidget *msg_area;
229 LiVESWidget *msg_scrollbar;
230 LiVESAdjustment *msg_adj;
231 LiVESWidget *fx_block;
232 LiVESWidget *fx_blockv;
233 LiVESWidget *fx_blocka;
234 LiVESWidget *fx_delete;
235 LiVESWidget *fx_edit;
236 LiVESWidget *fx_region;
237 LiVESWidget *fx_region_v;
238 LiVESWidget *fx_region_a;
239 LiVESWidget *fx_region_2av;
240 LiVESWidget *fx_region_2v;
241 LiVESWidget *fx_region_2a;
242 LiVESWidget *fx_region_3;
243 LiVESWidget *atrans_menuitem;
244 LiVESWidget *submenu_atransfx;
245 LiVESWidget *move_fx;
246 LiVESWidget *mm_menuitem;
247 LiVESWidget *mm_move;
248 LiVESWidget *mm_select;
249 LiVESWidget *ins_menuitem;
250 LiVESWidget *ins_normal;
251 LiVESWidget *grav_menuitem;
252 LiVESWidget *grav_label;
253 LiVESWidget *grav_normal;
254 LiVESWidget *grav_left;
255 LiVESWidget *grav_right;
256 LiVESWidget *select_track;
257 LiVESWidget *seldesel_menuitem;
258 LiVESWidget *view_events;
259 LiVESWidget *view_clips;
260 LiVESWidget *view_in_out;
261 LiVESWidget *view_effects;
262 LiVESWidget *show_quota;
263 LiVESWidget *avel_box;
265 LiVESWidget *spinbutton_avel;
266 LiVESWidget *avel_scale;
267 LiVESWidget *spinbutton_in;
268 LiVESWidget *spinbutton_out;
271 LiVESWidget *timecode;
272 LiVESWidget *spinbutton_start;
273 LiVESWidget *spinbutton_end;
274 LiVESWidget *tl_hbox;
275 LiVESWidget *fx_base_box;
276 LiVESWidget *fx_contents_box;
277 LiVESWidget *fx_box;
278 LiVESWidget *fx_label;
279 LiVESWidget *param_inner_box;
280 LiVESWidget *param_box;
281 LiVESWidget *next_node_button;
282 LiVESWidget *prev_node_button;
283 LiVESWidget *del_node_button;
284 LiVESWidget *resetp_button;
285 LiVESWidget *node_spinbutton;
286 LiVESWidget *node_scale;
287 LiVESWidget *sel_label;
288 LiVESWidget *l_sel_arrow;
289 LiVESWidget *r_sel_arrow;
290 LiVESWidget *save_event_list;
291 LiVESWidget *load_event_list;
292 LiVESWidget *clear_event_list;
293 LiVESWidget *tc_to_rs;
294 LiVESWidget *tc_to_re;
295 LiVESWidget *rs_to_tc;
296 LiVESWidget *re_to_tc;
297 LiVESWidget *undo;
298 LiVESWidget *redo;
299 LiVESWidget *ac_audio_check;
300 LiVESWidget *remove_gaps;
301 LiVESWidget *remove_first_gaps;
302 LiVESWidget *split_sel;
303 LiVESWidget *ins_gap_sel;
304 LiVESWidget *ins_gap_cur;
305 LiVESWidget *last_filter_map;
306 LiVESWidget *next_filter_map;
307 LiVESWidget *fx_list_box;
308 LiVESWidget *fx_list_label;
309 LiVESWidget *fx_list_scroll;
310 LiVESWidget *fx_list_vbox;
311 LiVESWidget *next_fm_button;
312 LiVESWidget *prev_fm_button;
313 LiVESWidget *fx_ibefore_button;
314 LiVESWidget *fx_iafter_button;
315 LiVESWidget *rename_track;
316 LiVESWidget *cback_audio;
317 LiVESWidget *aload_subs;
318 LiVESWidget *load_vals;
319 LiVESWidget *change_vals;
320 LiVESWidget *aparam_separator;
321 LiVESWidget *aparam_menuitem;
322 LiVESWidget *aparam_submenu;
323 LiVESWidget *render_sep;
324 LiVESWidget *render_vid;
325 LiVESWidget *render_aud;
326 LiVESWidget *normalise_aud;
327 LiVESWidget *view_audio;
328 LiVESWidget *clear_marks;
329 LiVESWidget *fd_frame;
330 LiVESWidget *apply_fx_button;
331 LiVESToolItem *eview_button;
332 LiVESWidget *eview_label;
333 LiVESWidget *follow_play;
334 LiVESWidget *change_max_disp;
335 LiVESWidget *add_vid_behind;
336 LiVESWidget *add_vid_front;
337 LiVESWidget *show_info;
338 LiVESWidget *quit;
339 LiVESWidget *troubleshoot;
340 LiVESWidget *expl_missing;
341 LiVESWidget *show_devopts;
342 LiVESWidget *fx_params_label;
343 LiVESWidget *solo_check;
344 LiVESWidget *amixer_button;
345 LiVESWidget *view_sel_events;
346 LiVESWidget *adjust_start_end;
347 LiVESWidget *context_frame;
348 LiVESWidget *nb;
349 LiVESWidget *nb_label;
350
351 LiVESWidget *eventbox;
352 LiVESWidget *scroll_label;
353 LiVESWidget *preview_frame;
354 LiVESWidget *preview_eventbox;
355 LiVESWidget *btoolbarx;
356 LiVESWidget *btoolbary;
357 LiVESWidget *bleedthru;
358 LiVESWidget *time_label;
359 LiVESWidget *insa_label;
360 LiVESWidget *overlap_label;
361 LiVESWidget *amix_label;
362 LiVESWidget *tl_label;
363 LiVESWidget *dumlabel1;
364 LiVESWidget *dumlabel2;
365 LiVESWidget *top_eventbox;
366 LiVESWidget *tlx_eventbox;
367 LiVESWidget *tlx_vbox;
368
369 LiVESWidget *grav_submenu;
370 LiVESWidget *ins_submenu;
371 LiVESWidget *mm_submenu;
372 LiVESWidget *ins_label;
373 LiVESWidget *mm_label;
374
375 LiVESWidget *nb_label1;
376 LiVESWidget *nb_label2;
377 LiVESWidget *nb_label3;
378 LiVESWidget *nb_label4;
379 LiVESWidget *nb_label5;
380 LiVESWidget *nb_label6;
381 LiVESWidget *nb_label7;
382
383 LiVESToolItem *sep1;
384 LiVESToolItem *sep2;
385 LiVESToolItem *sep3;
386 LiVESWidget *sep4;
387
388 LiVESWidget *btoolbar2;
389 LiVESWidget *btoolbar3;
390
391 LiVESWidget *menu_hbox;
392
393 LiVESWidget *hseparator;
394 LiVESWidget *hseparator2;
395
396 LiVESWidget *files_menu;
397 LiVESWidget *edit_menu;
398 LiVESWidget *play_menu;
399 LiVESWidget *effects_menu;
400 LiVESWidget *tracks_menu;
401 LiVESWidget *selection_menu;
402 LiVESWidget *tools_menu;
403 LiVESWidget *render_menu;
404 LiVESWidget *view_menu;
405 LiVESWidget *help_menu;
406
407 LiVESWidget *open_menu;
408#ifdef HAVE_WEBM
409 LiVESWidget *open_loc_menu;
410#endif
411#ifdef ENABLE_DVD_GRAB
412 LiVESWidget *vcd_dvd_menu;
413#endif
414#ifdef HAVE_LDVGRAB
415 LiVESWidget *device_menu;
416#endif
417 LiVESWidget *recent_menu;
418 LiVESWidget *recent[N_RECENT_FILES];
419
420 LiVESWidget *time_scrollbar;
421 LiVESWidget *show_layout_errors;
422
423 LiVESWidget *load_set;
424 LiVESWidget *save_set;
425
426 LiVESWidget *close;
427
428 LiVESWidget *clear_ds;
429
430 LiVESWidget *gens_submenu;
431 LiVESWidget *capture;
432
433 LiVESWidget *backup;
434
435 LiVESWidget *insa_checkbutton;
436 LiVESWidget *snapo_checkbutton;
437
438 LiVESWidgetObject *spinbutton_in_adj;
439 LiVESWidgetObject *spinbutton_out_adj;
440
441 LiVESWidgetObject *hadjustment;
442 LiVESWidgetObject *node_adj;
443
444 LiVESList *audio_draws;
445
446 LiVESList *audio_vols;
447 LiVESList *audio_vols_back;
448
449 LiVESAccelGroup *accel_group;
450 LiVESList *video_draws;
451 LiVESWidgetObject *vadjustment;
452
453 LiVESXDisplay *display;
454
455 LiVESPixbuf *frame_pixbuf;
456
457 LiVESList *cb_list;
458
459 lives_painter_surface_t *insurface, *outsurface;
460
467
470
472
476
480
482
484
485 //ulong sw_func;
486
487 lives_painter_surface_t *pbox_surface;
488
489 lives_painter_surface_t *tl_ev_surf;
490 lives_painter_surface_t *tl_reg_surf;
491 lives_painter_surface_t *tl_surf;
492
493 weed_plant_t *event_list;
494
495 weed_plant_t *init_event;
496 weed_plant_t *selected_init_event;
499 double end_secs;
500
501 // timeline min and max display values
502 double tl_min;
503 double tl_max;
504
508
509 LiVESList *selected_tracks;
510
512
514
516
517 track_rect *block_selected;
518 track_rect *putative_block;
519
520 double ptr_time;
521
523
524 double fps;
525
527 double region_end;
528 double region_init;
530
531 boolean is_rendering;
532 boolean pr_audio;
533
535
537
539
540 boolean sel_locked;
541
543
545
546 // cursor warping for mouse move mode
547 double hotspot_x;
549
550 boolean moving_block;
551
554
556
557 int sel_x;
558 int sel_y;
559
562
563 boolean tl_selecting;
564
565 /* start and end offset overrides for inserting (used during block move) */
568
571
572 LiVESList *undos;
574 uint8_t *undo_mem;
576 boolean did_backup;
577
578 char undo_text[32];
579 char redo_text[32];
580
581 boolean undoable;
582 boolean redoable;
583
584 boolean changed;
585 boolean auto_changed;
586
588
591
593
595
596 mt_opts opts;
597
599
600 weed_plant_t *fm_edit_event;
601 weed_plant_t *moving_fx;
602
604 weed_plant_t *avol_init_event;
605
608
612
613 double user_fps;
620
622
624
626
627 weed_plant_t *solo_inst;
628
629 LiVESList *tl_marks;
630
631 weed_plant_t *pb_start_event;
632 weed_plant_t *pb_loop_event;
633
634 weed_plant_t *specific_event;
635
637 boolean use_context;
638
640
641 boolean is_paused;
642
643 /* current size of frame inside playback/preview area */
646
647 /* /\* current size of playback/preview area *\/ */
648 /* int play_window_width; */
649 /* int play_window_height; */
650
652
654
655 boolean redraw_block;
656
658
659 boolean no_expose;
660
661 boolean is_ready;
662
664
666
667 boolean tl_mouse;
668
669 boolean playing_sel;
670
671 uint32_t idlefunc;
672
673 LiVESList *clip_labels;
674
675 lives_amixer_t *amixer;
676
678
681
682 boolean is_atrans;
683
686
689}; // lives_mt
690
691typedef struct {
694 void *extra;
695 size_t data_len;
696} mt_undo;
697
699 LiVESWidget *window;
700 LiVESWidget *main_hbox;
701 LiVESWidget **ch_sliders;
702 LiVESWidget *gang_checkbutton;
703 LiVESWidget *inv_checkbutton;
706 lives_mt *mt;
707};
708
709// reasons for track invisibility (bitmap)
710#define TRACK_I_HIDDEN_USER (1<<0)
711#define TRACK_I_HIDDEN_SCROLLED (1<<1)
712
717
721
722 track_rect *next;
723 track_rect *prev;
724 weed_plant_t *start_event;
725 weed_plant_t *end_event;
726
728
732 boolean ordered;
733
734 LiVESWidget
736};
737
738/* translation table for matching event_id to init_event */
739typedef struct {
740 uint64_t in;
741 void *out;
742} ttable;
743
744/* clip->layout use mapping, from layout.map lives_clip_t */
745typedef struct {
746 char *handle;
747 int64_t unique_id;
748 char *name;
749 LiVESList *list;
750} layout_map;
751
753
754// setup functions
755
756lives_mt *multitrack(weed_plant_t *, int orig_file, double fps);
757void mt_init_tracks(lives_mt *, boolean set_min_max);
758boolean on_multitrack_activate(LiVESMenuItem *menuitem, weed_plant_t *event_list);
759
760// theming
761void set_mt_colours(lives_mt *);
762
763// delete function
764boolean multitrack_delete(lives_mt *, boolean save);
765
766// morph the poly window
767void polymorph(lives_mt *, lives_mt_poly_state_t poly);
768void set_poly_tab(lives_mt *mt, uint32_t tab);
769
770// gui related
771void mt_desensitise(lives_mt *);
772void mt_sensitise(lives_mt *);
773void set_mt_play_sizes_cfg(lives_mt *);
774boolean mt_idle_show_current_frame(livespointer mt);
775boolean show_in_out_images(livespointer mt);
776
777void add_aparam_menuitems(lives_mt *);
778
779// external control callbacks
780void insert_here_cb(LiVESMenuItem *, livespointer mt);
781void insert_audio_here_cb(LiVESMenuItem *, livespointer mt);
782void insert_at_ctx_cb(LiVESMenuItem *, livespointer mt);
783void insert_audio_at_ctx_cb(LiVESMenuItem *, livespointer mt);
784void multitrack_end_cb(LiVESMenuItem *, livespointer mt);
785void delete_block_cb(LiVESMenuItem *, livespointer mt);
786void selblock_cb(LiVESMenuItem *, livespointer mt);
787void list_fx_here_cb(LiVESMenuItem *, livespointer mt);
788void edit_start_end_cb(LiVESMenuItem *, livespointer mt);
789void close_clip_cb(LiVESMenuItem *, livespointer mt);
790void show_clipinfo_cb(LiVESMenuItem *, livespointer mt);
791
792boolean multitrack_insert(LiVESMenuItem *, livespointer mt);
793track_rect *move_block(lives_mt *, track_rect *block, double timesecs, int old_track, int new_track);
794
795void update_grav_mode(lives_mt *);
796void update_insert_mode(lives_mt *);
797
798boolean on_render_activate(LiVESMenuItem *, livespointer mt);
799
800void mt_set_autotrans(int idx);
801
802// event_list functions
803weed_plant_t *add_blank_frames_up_to(weed_plant_t *event_list, weed_plant_t *start_event, ticks_t end_tc, double fps);
804
805// track functions
806char *get_track_name(lives_mt *, int track_num, boolean is_audio);
807void on_cback_audio_activate(LiVESMenuItem *, livespointer mt);
808LiVESWidget *add_audio_track(lives_mt *, int trackno, boolean behind);
809int add_video_track_behind(LiVESMenuItem *, livespointer mt);
810int add_video_track_front(LiVESMenuItem *, livespointer mt);
811void delete_video_track(lives_mt *, int layer, boolean full);
812void delete_audio_track(lives_mt *, LiVESWidget *eventbox, boolean full);
813void delete_audio_tracks(lives_mt *, LiVESList *list, boolean full);
814void remove_gaps(LiVESMenuItem *, livespointer mt);
815void remove_first_gaps(LiVESMenuItem *, livespointer mt);
816void on_insgap_sel_activate(LiVESMenuItem *, livespointer mt);
817void on_insgap_cur_activate(LiVESMenuItem *, livespointer mt);
818void on_split_activate(LiVESMenuItem *, livespointer mt);
819void scroll_tracks(lives_mt *, int top_track, boolean set_value);
820boolean track_arrow_pressed(LiVESWidget *ahbox, LiVESXEventButton *, livespointer mt);
821void track_select(lives_mt *);
822void mt_selection_lock(LiVESMenuItem *, livespointer user_data);
823boolean mt_track_is_audio(lives_mt *, int ntrack);
824boolean mt_track_is_video(lives_mt *, int ntrack);
825
826void mt_do_autotransition(lives_mt *, track_rect *block);
827
828void set_track_label_string(lives_mt *mt, int track, const char *label);
829
830LiVESWidget *get_eventbox_for_track(lives_mt *mt, int ntrack);
831void on_rename_track_activate(LiVESMenuItem *menuitem, livespointer mt);
832
833// track mouse movement
834boolean on_track_click(LiVESWidget *eventbox, LiVESXEventButton *, livespointer mt);
835boolean on_atrack_click(LiVESWidget *eventbox, LiVESXEventButton *, livespointer mt);
836boolean on_track_header_click(LiVESWidget *eventbox, LiVESXEventButton *, livespointer mt);
837boolean on_track_between_click(LiVESWidget *eventbox, LiVESXEventButton *, livespointer mt);
838boolean on_track_release(LiVESWidget *eventbox, LiVESXEventButton *event, livespointer mt);
839boolean on_atrack_release(LiVESWidget *eventbox, LiVESXEventButton *event, livespointer mt);
840boolean on_track_header_release(LiVESWidget *eventbox, LiVESXEventButton *, livespointer mt);
841boolean on_track_between_release(LiVESWidget *eventbox, LiVESXEventButton *, livespointer mt);
842boolean on_track_move(LiVESWidget *widget, LiVESXEventMotion *event, livespointer mt);
843boolean on_track_header_move(LiVESWidget *widget, LiVESXEventMotion *event, livespointer mt);
844
845void unselect_all(lives_mt *);
846void insert_frames(int filenum, ticks_t offset_start, ticks_t offset_end, ticks_t tc,
847 lives_direction_t direction, LiVESWidget *eventbox, lives_mt *, track_rect *in_block);
848void insert_audio(int filenum, ticks_t offset_start, ticks_t offset_end, ticks_t tc,
849 double avel, lives_direction_t direction, LiVESWidget *eventbox, lives_mt *, track_rect *in_block);
850void on_seltrack_toggled(LiVESWidget *, livespointer mt);
851void scroll_track_by_scrollbar(LiVESScrollbar *sbar, livespointer mt);
852
853// block functions
854void in_out_start_changed(LiVESWidget *, livespointer mt);
855void in_out_end_changed(LiVESWidget *, livespointer mt);
856void in_anchor_toggled(LiVESToggleButton *, livespointer mt);
857void out_anchor_toggled(LiVESToggleButton *, livespointer mt);
858void avel_reverse_toggled(LiVESToggleButton *, livespointer mt);
859void avel_spin_changed(LiVESSpinButton *, livespointer mt);
860
861// block API functions
862track_rect *find_block_by_uid(lives_mt *mt, ulong uid);
863ulong mt_get_last_block_uid(lives_mt *mt);
864int mt_get_block_count(lives_mt *, int ntrack);
865double mt_get_block_sttime(lives_mt *, int ntrack, int iblock);
866double mt_get_block_entime(lives_mt *, int ntrack, int iblock);
867
868track_rect *get_block_from_track_and_time(lives_mt *mt, int track, double time);
869
870int get_track_for_block(track_rect *block);
871int get_clip_for_block(track_rect *block);
872
873// timeline functions
874boolean resize_timeline(lives_mt *);
875void mt_tl_move(lives_mt *, double pos_abs);
876void set_timeline_end_secs(lives_mt *, double secs);
877boolean on_timeline_press(LiVESWidget *, LiVESXEventButton *, livespointer mt);
878boolean on_timeline_release(LiVESWidget *, LiVESXEventButton *, livespointer mt);
879boolean on_timeline_update(LiVESWidget *, LiVESXEventMotion *, livespointer mt);
880void draw_region(lives_mt *mt);
881
882boolean mt_mark_callback(LiVESAccelGroup *group, LiVESWidgetObject *obj, uint32_t keyval, LiVESXModifierType mod,
883 livespointer user_data);
884
885void mt_show_current_frame(lives_mt *, boolean return_layer);
886void mt_clear_timeline(lives_mt *mt);
887
888void mt_zoom_in(LiVESMenuItem *, livespointer mt);
889void mt_zoom_out(LiVESMenuItem *, livespointer mt);
890
891// context box text
892void clear_context(lives_mt *);
893void add_context_label(lives_mt *, const char *text);
894void mouse_mode_context(lives_mt *);
895void do_sel_context(lives_mt *);
896void do_fx_list_context(lives_mt *, int fxcount);
897void do_fx_move_context(lives_mt *mt);
898
899// playback / animation
900void multitrack_playall(lives_mt *);
901void multitrack_play_sel(LiVESMenuItem *, livespointer mt);
902void animate_multitrack(lives_mt *);
903void unpaint_line(lives_mt *, LiVESWidget *eventbox);
904void unpaint_lines(lives_mt *);
905
906void mt_prepare_for_playback(lives_mt *);
907void mt_post_playback(lives_mt *);
908
909boolean mt_tcoverlay_callback(LiVESAccelGroup *, LiVESWidgetObject *, uint32_t keyval, LiVESXModifierType mod,
910 livespointer user_data);
911
912// effect node controls
913void on_next_node_clicked(LiVESWidget *, livespointer mt);
914void on_prev_node_clicked(LiVESWidget *, livespointer mt);
915void on_del_node_clicked(LiVESWidget *, livespointer mt);
916void on_resetp_clicked(LiVESWidget *, livespointer mt);
917void on_node_spin_value_changed(LiVESSpinButton *, livespointer mt);
918double mt_get_effect_time(lives_mt *);
919
920void on_frame_preview_clicked(LiVESButton *, livespointer mt);
921void show_preview(lives_mt *, ticks_t tc);
922
923boolean add_mt_param_box(lives_mt *);
924void redraw_mt_param_box(lives_mt *);
925
926// filter list controls
927weed_plant_t *get_prev_fm(lives_mt *, int current_track, weed_plant_t *frame);
928weed_plant_t *get_next_fm(lives_mt *, int current_track, weed_plant_t *frame);
929
930void on_prev_fm_clicked(LiVESWidget *button, livespointer mt);
931void on_next_fm_clicked(LiVESWidget *button, livespointer mt);
932void on_fx_insb_clicked(LiVESWidget *button, livespointer mt);
933void on_fx_insa_clicked(LiVESWidget *button, livespointer mt);
934
935// utils
936boolean event_list_rectify(lives_mt *, weed_plant_t *event_listy);
937void *find_init_event_in_ttable(ttable *trans_table, uint64_t in, boolean normal);
938void reset_renumbering(void);
939boolean make_backup_space(lives_mt *, size_t space_needed);
940void activate_mt_preview(lives_mt *);
941void **mt_get_pchain(void);
942void event_list_free_undos(lives_mt *);
943boolean used_in_current_layout(lives_mt *, int file);
944
945boolean set_new_set_name(lives_mt *);
946
947LiVESPixbuf *make_thumb(lives_mt *mt, int file, int width, int height, int frame, LiVESInterpType interp, boolean noblanks);
948
949void free_thumb_cache(int fnum, frames_t fromframe);
950
951// event_list utilities
952boolean compare_filter_maps(weed_plant_t *fm1, weed_plant_t *fm2,
953 int ctrack);
954void move_init_in_filter_map(lives_mt *, weed_plant_t *event_list, weed_plant_t *fmap, weed_plant_t *ifrom,
955 weed_plant_t *ito, int track, boolean after);
956void update_filter_events(lives_mt *, weed_plant_t *first_event, ticks_t start_tc, ticks_t end_tc,
957 int track, ticks_t new_start_tc, int new_track);
958void mt_fixup_events(lives_mt *, weed_plant_t *old_event, weed_plant_t *new_event);
959
960// event_list load/save
961char *get_eload_filename(lives_mt *mt, boolean allow_auto_reload);
962weed_plant_t *load_event_list(lives_mt *, char *eload_file);
963boolean on_save_event_list_activate(LiVESMenuItem *, livespointer mt);
964boolean save_event_list_inner(lives_mt *, int fd, weed_plant_t *event_list, unsigned char **mem);
965boolean mt_load_recovery_layout(lives_mt *);
966
967// layouts and layout maps
968LiVESList *load_layout_map(void);
969void add_markers(lives_mt *, weed_plant_t *event_list, boolean add_block_ids);
970void remove_markers(weed_plant_t *event_list);
971void save_layout_map(int *lmap, double *lmap_audio, const char *file, const char *dir);
972
973void wipe_layout(lives_mt *);
974
975void migrate_layouts(const char *old_set_name, const char *new_set_name);
976
977LiVESList *layout_frame_is_affected(int clipno, int start, int end, LiVESList *xlays);
978LiVESList *layout_audio_is_affected(int clipno, double stime, double etime, LiVESList *xlays);
979
980boolean check_for_layout_del(lives_mt *, boolean exiting);
981
982boolean on_load_event_list_activate(LiVESMenuItem *, livespointer mt);
983
984void stored_event_list_free_all(boolean wiped);
987
988// auto backup
990uint32_t mt_idle_add(lives_mt *);
991boolean recover_layout(void);
992void recover_layout_cancelled(boolean is_startup);
993boolean write_backup_layout_numbering(lives_mt *);
994boolean mt_auto_backup(livespointer mt);
995
996// amixer funcs
997void amixer_show(LiVESButton *, livespointer mt);
998void on_amixer_close_clicked(LiVESButton *, lives_mt *mt);
999LiVESWidget *amixer_add_channel_slider(lives_mt *, int i);
1000
1001// misc
1002void mt_change_disp_tracks_ok(LiVESButton *, livespointer mt);
1003void mt_swap_play_pause(lives_mt *, boolean put_pause);
1004char *set_values_from_defs(lives_mt *, boolean from_prefs);
1005
1006// clip boxes
1007void mt_clip_select(lives_mt *, boolean scroll);
1008void mt_delete_clips(lives_mt *, int file);
1009void mt_init_clips(lives_mt *, int orig_file, boolean add);
1010
1011// key shortcuts
1012boolean mt_prevclip(LiVESAccelGroup *, LiVESWidgetObject *, uint32_t keyval, LiVESXModifierType mod, livespointer);
1013boolean mt_nextclip(LiVESAccelGroup *, LiVESWidgetObject *, uint32_t keyval, LiVESXModifierType mod, livespointer);
1014
1015typedef enum {
1016 /* default to warn about */
1021
1022 /*non-default*/
1027
1028 /* info */
1031
1032typedef struct {
1034 char *name;
1035 livespointer data;
1036 int clipno, frameno;
1037 double atime;
1038 boolean current;
1039} lmap_error;
1040
1041#define DEF_MT_DISP_TRACKS 5
1042
1043// array max: TODO - use dynamic arrays to bypass track limits
1044#define MAX_TRACKS 65536
1045#define MAX_VIDEO_TRACKS 65536
1046#define MAX_AUDIO_TRACKS 65536
1047
1048// double -> quantised double
1049#define QUANT_TIME(dbltime) ((q_gint64(dbltime * TICKS_PER_SECOND_DBL, mt->fps) / TICKS_PER_SECOND_DBL))
1050
1051// ticks -> quantised double
1052#define QUANT_TICKS(ticks) ((q_gint64(ticks, mt->fps) / TICKS_PER_SECOND_DBL))
1053
1054#endif
int frames_t
Definition: main.h:99
#define ulong
Definition: main.h:178
#define N_RECENT_FILES
Definition: main.h:657
lives_direction_t
use REVERSE / FORWARD when a sign is used, BACKWARD / FORWARD when a parity is used
Definition: main.h:851
int64_t ticks_t
Definition: main.h:97
#define PATH_MAX
Definition: main.h:255
boolean on_track_header_release(LiVESWidget *eventbox, LiVESXEventButton *, livespointer mt)
Definition: multitrack.c:13936
void insert_at_ctx_cb(LiVESMenuItem *, livespointer mt)
Definition: multitrack.c:14251
void mt_post_playback(lives_mt *)
Definition: multitrack.c:17284
void on_insgap_cur_activate(LiVESMenuItem *, livespointer mt)
Definition: multitrack.c:15029
void delete_audio_tracks(lives_mt *, LiVESList *list, boolean full)
Definition: multitrack.c:5986
void mt_set_autotrans(int idx)
Definition: multitrack.c:6080
char * get_eload_filename(lives_mt *mt, boolean allow_auto_reload)
Definition: multitrack.c:21623
boolean mt_mark_callback(LiVESAccelGroup *group, LiVESWidgetObject *obj, uint32_t keyval, LiVESXModifierType mod, livespointer user_data)
Definition: multitrack.c:18883
void in_anchor_toggled(LiVESToggleButton *, livespointer mt)
Definition: multitrack.c:12683
boolean on_render_activate(LiVESMenuItem *, livespointer mt)
Definition: multitrack.c:16078
void on_node_spin_value_changed(LiVESSpinButton *, livespointer mt)
Definition: multitrack.c:19024
boolean multitrack_insert(LiVESMenuItem *, livespointer mt)
Definition: multitrack.c:17480
void on_rename_track_activate(LiVESMenuItem *menuitem, livespointer mt)
Definition: multitrack.c:16037
boolean mt_auto_backup(livespointer mt)
Definition: multitrack.c:863
void edit_start_end_cb(LiVESMenuItem *, livespointer mt)
Definition: multitrack.c:14259
boolean on_timeline_update(LiVESWidget *, LiVESXEventMotion *, livespointer mt)
Definition: multitrack.c:18460
lives_mt * multitrack(weed_plant_t *, int orig_file, double fps)
create and return lives_mt struct
Definition: multitrack.c:6448
void mt_clear_timeline(lives_mt *mt)
Definition: multitrack.c:10742
boolean on_track_between_click(LiVESWidget *eventbox, LiVESXEventButton *, livespointer mt)
Definition: multitrack.c:13947
void do_fx_list_context(lives_mt *, int fxcount)
Definition: multitrack.c:18603
void multitrack_play_sel(LiVESMenuItem *, livespointer mt)
Definition: multitrack.c:17449
void amixer_show(LiVESButton *, livespointer mt)
Definition: multitrack.c:22757
track_rect * get_block_from_track_and_time(lives_mt *mt, int track, double time)
get timeline end time of block
Definition: multitrack.c:23099
LiVESWidget * amixer_add_channel_slider(lives_mt *, int i)
Definition: multitrack.c:22694
LiVESWidget * get_eventbox_for_track(lives_mt *mt, int ntrack)
Definition: multitrack.c:22981
boolean mt_track_is_video(lives_mt *, int ntrack)
return TRUE if ntrack is a valid video track
Definition: multitrack.c:23042
void delete_audio_track(lives_mt *, LiVESWidget *eventbox, boolean full)
Definition: multitrack.c:8993
boolean on_save_event_list_activate(LiVESMenuItem *, livespointer mt)
Definition: multitrack.c:19990
void on_amixer_close_clicked(LiVESButton *, lives_mt *mt)
Definition: multitrack.c:22536
void on_split_activate(LiVESMenuItem *, livespointer mt)
Definition: multitrack.c:16552
void out_anchor_toggled(LiVESToggleButton *, livespointer mt)
Definition: multitrack.c:12729
lives_mt_insert_mode_t
Definition: multitrack.h:75
@ INSERT_MODE_NORMAL
the default (only insert if it fits)
Definition: multitrack.h:76
@ INSERT_MODE_FILL
insert enough to fill gap (from selection start or end depending on gravity)
Definition: multitrack.h:81
@ INSERT_MODE_FLEX
stretch first gap to fit block
Definition: multitrack.h:80
@ INSERT_MODE_OVERWRITE
overwite existing blocks
Definition: multitrack.h:79
boolean on_track_header_move(LiVESWidget *widget, LiVESXEventMotion *event, livespointer mt)
Definition: multitrack.c:14121
void on_prev_fm_clicked(LiVESWidget *button, livespointer mt)
Definition: multitrack.c:18933
track_rect * find_block_by_uid(lives_mt *mt, ulong uid)
Definition: multitrack.c:23012
void reset_renumbering(void)
Definition: multitrack.c:9646
LiVESWidget * add_audio_track(lives_mt *, int trackno, boolean behind)
Definition: multitrack.c:10166
lives_mt_last_fx_type_t
Definition: multitrack.h:132
@ MT_LAST_FX_BLOCK
Definition: multitrack.h:134
@ MT_LAST_FX_REGION
Definition: multitrack.h:135
@ MT_LAST_FX_NONE
Definition: multitrack.h:133
char * get_track_name(lives_mt *, int track_num, boolean is_audio)
Definition: multitrack.c:1038
void do_sel_context(lives_mt *)
Definition: multitrack.c:18583
lives_mt_fx_order_t
Definition: multitrack.h:138
@ FX_ORD_AFTER
Definition: multitrack.h:141
@ FX_ORD_BEFORE
Definition: multitrack.h:140
@ FX_ORD_NONE
Definition: multitrack.h:139
track_rect * move_block(lives_mt *, track_rect *block, double timesecs, int old_track, int new_track)
Definition: multitrack.c:11417
weed_plant_t * get_prev_fm(lives_mt *, int current_track, weed_plant_t *frame)
Definition: multitrack.c:18784
void maybe_add_mt_idlefunc(void)
void unselect_all(lives_mt *)
unselect all blocks
Definition: multitrack.c:11620
void add_markers(lives_mt *, weed_plant_t *event_list, boolean add_block_ids)
Definition: multitrack.c:19877
void add_context_label(lives_mt *, const char *text)
Definition: multitrack.c:11698
boolean check_for_layout_del(lives_mt *, boolean exiting)
Definition: multitrack.c:5924
void mt_change_disp_tracks_ok(LiVESButton *, livespointer mt)
Definition: multitrack.c:22314
void recover_layout_cancelled(boolean is_startup)
Definition: multitrack.c:923
void mt_tl_move(lives_mt *, double pos_abs)
Definition: multitrack.c:3595
void on_del_node_clicked(LiVESWidget *, livespointer mt)
Definition: multitrack.c:19235
void stored_event_list_free_undos(void)
Definition: multitrack.c:5842
void on_frame_preview_clicked(LiVESButton *, livespointer mt)
int add_video_track_behind(LiVESMenuItem *, livespointer mt)
Definition: multitrack.c:10523
void scroll_track_by_scrollbar(LiVESScrollbar *sbar, livespointer mt)
Definition: multitrack.c:3650
boolean mt_nextclip(LiVESAccelGroup *, LiVESWidgetObject *, uint32_t keyval, LiVESXModifierType mod, livespointer)
Definition: multitrack.c:3107
boolean recover_layout(void)
Definition: multitrack.c:1010
void close_clip_cb(LiVESMenuItem *, livespointer mt)
Definition: multitrack.c:14266
boolean on_atrack_release(LiVESWidget *eventbox, LiVESXEventButton *event, livespointer mt)
void on_next_fm_clicked(LiVESWidget *button, livespointer mt)
Definition: multitrack.c:18950
void mt_zoom_in(LiVESMenuItem *, livespointer mt)
Definition: multitrack.c:4419
void save_layout_map(int *lmap, double *lmap_audio, const char *file, const char *dir)
Definition: multitrack.c:19714
boolean used_in_current_layout(lives_mt *, int file)
Definition: multitrack.c:9180
double mt_get_effect_time(lives_mt *)
Definition: multitrack.c:1735
void mt_init_clips(lives_mt *, int orig_file, boolean add)
Definition: multitrack.c:10859
void animate_multitrack(lives_mt *)
Definition: multitrack.c:14223
void update_insert_mode(lives_mt *)
Definition: multitrack.c:4946
void add_aparam_menuitems(lives_mt *)
Definition: multitrack.c:5308
void draw_region(lives_mt *mt)
Definition: multitrack.c:18159
boolean make_backup_space(lives_mt *, size_t space_needed)
Definition: multitrack.c:5157
boolean on_track_header_click(LiVESWidget *eventbox, LiVESXEventButton *, livespointer mt)
Definition: multitrack.c:13925
boolean show_in_out_images(livespointer mt)
Definition: multitrack.c:11878
uint32_t mt_idle_add(lives_mt *)
Definition: multitrack.c:901
void mt_clip_select(lives_mt *, boolean scroll)
Definition: multitrack.c:3024
boolean mt_idle_show_current_frame(livespointer mt)
Definition: multitrack.c:11015
weed_plant_t * add_blank_frames_up_to(weed_plant_t *event_list, weed_plant_t *start_event, ticks_t end_tc, double fps)
void do_fx_move_context(lives_mt *mt)
Definition: multitrack.c:18615
void in_out_end_changed(LiVESWidget *, livespointer mt)
Definition: multitrack.c:12174
void move_init_in_filter_map(lives_mt *, weed_plant_t *event_list, weed_plant_t *fmap, weed_plant_t *ifrom, weed_plant_t *ito, int track, boolean after)
Definition: multitrack.c:20293
void redraw_mt_param_box(lives_mt *)
boolean mt_prevclip(LiVESAccelGroup *, LiVESWidgetObject *, uint32_t keyval, LiVESXModifierType mod, livespointer)
Definition: multitrack.c:3096
void mt_selection_lock(LiVESMenuItem *, livespointer user_data)
lock the time selection
Definition: multitrack.c:16863
void scroll_tracks(lives_mt *, int top_track, boolean set_value)
Definition: multitrack.c:2347
void set_mt_play_sizes_cfg(lives_mt *)
Definition: multitrack.c:5516
int mt_get_block_count(lives_mt *, int ntrack)
count blocks in track
Definition: multitrack.c:23065
lives_mt_undo_t
Definition: multitrack.h:90
@ MT_UNDO_DELETE_FILTER
Definition: multitrack.h:99
@ MT_UNDO_INSERT_AUDIO_BLOCK
Definition: multitrack.h:95
@ MT_UNDO_SPLIT
Definition: multitrack.h:100
@ MT_UNDO_MOVE_AUDIO_BLOCK
Definition: multitrack.h:109
@ MT_UNDO_INSERT_GAP
Definition: multitrack.h:110
@ MT_UNDO_DELETE_BLOCK
Definition: multitrack.h:105
@ MT_UNDO_FILTER_MAP_CHANGE
Definition: multitrack.h:102
@ MT_UNDO_SPLIT_MULTI
Definition: multitrack.h:101
@ MT_UNDO_DELETE_AUDIO_BLOCK
Definition: multitrack.h:108
@ MT_UNDO_NONE
no event_list
Definition: multitrack.h:93
@ MT_UNDO_MOVE_BLOCK
Definition: multitrack.h:106
@ MT_UNDO_APPLY_FILTER
Definition: multitrack.h:98
@ MT_UNDO_REMOVE_GAPS
Definition: multitrack.h:107
@ MT_UNDO_INSERT_BLOCK
Definition: multitrack.h:94
void set_poly_tab(lives_mt *mt, uint32_t tab)
Definition: multitrack.c:3962
void mt_zoom_out(LiVESMenuItem *, livespointer mt)
Definition: multitrack.c:4429
void insert_audio_here_cb(LiVESMenuItem *, livespointer mt)
Definition: multitrack.c:14284
void delete_video_track(lives_mt *, int layer, boolean full)
Definition: multitrack.c:10121
void on_fx_insa_clicked(LiVESWidget *button, livespointer mt)
Definition: multitrack.c:18907
void on_seltrack_toggled(LiVESWidget *, livespointer mt)
Definition: multitrack.c:16962
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:20384
boolean mt_tcoverlay_callback(LiVESAccelGroup *, LiVESWidgetObject *, uint32_t keyval, LiVESXModifierType mod, livespointer user_data)
Definition: multitrack.c:18897
boolean event_list_rectify(lives_mt *, weed_plant_t *event_listy)
Definition: multitrack.c:20713
LiVESPixbuf * make_thumb(lives_mt *mt, int file, int width, int height, int frame, LiVESInterpType interp, boolean noblanks)
Definition: multitrack.c:405
void update_grav_mode(lives_mt *)
Definition: multitrack.c:5012
boolean track_arrow_pressed(LiVESWidget *ahbox, LiVESXEventButton *, livespointer mt)
Definition: multitrack.c:2807
lives_mt_block_state_t
Definition: multitrack.h:144
@ BLOCK_UNSELECTED
Definition: multitrack.h:146
@ BLOCK_SELECTED
Definition: multitrack.h:147
boolean multitrack_delete(lives_mt *, boolean save)
Definition: multitrack.c:9204
boolean on_load_event_list_activate(LiVESMenuItem *, livespointer mt)
Definition: multitrack.c:22045
void mt_swap_play_pause(lives_mt *, boolean put_pause)
Definition: multitrack.c:17206
LiVESList * layout_audio_is_affected(int clipno, double stime, double etime, LiVESList *xlays)
Definition: multitrack.c:22281
int get_track_for_block(track_rect *block)
return track number for a given block
Definition: multitrack.c:231
boolean set_new_set_name(lives_mt *)
Definition: multitrack.c:19944
void unpaint_line(lives_mt *, LiVESWidget *eventbox)
Definition: multitrack.c:14130
boolean on_atrack_click(LiVESWidget *eventbox, LiVESXEventButton *, livespointer mt)
void update_filter_events(lives_mt *, weed_plant_t *first_event, ticks_t start_tc, ticks_t end_tc, int track, ticks_t new_start_tc, int new_track)
void multitrack_end_cb(LiVESMenuItem *, livespointer mt)
Definition: multitrack.c:14237
void migrate_layouts(const char *old_set_name, const char *new_set_name)
Definition: multitrack.c:22115
weed_plant_t * get_next_fm(lives_mt *, int current_track, weed_plant_t *frame)
Definition: multitrack.c:18838
void mt_sensitise(lives_mt *)
Definition: multitrack.c:17052
lives_lmap_error_t
Definition: multitrack.h:1015
@ LMAP_ERROR_DELETE_AUDIO
Definition: multitrack.h:1020
@ LMAP_ERROR_SHIFT_FRAMES
Definition: multitrack.h:1023
@ LMAP_ERROR_ALTER_FRAMES
Definition: multitrack.h:1024
@ LMAP_ERROR_MISSING_CLIP
Definition: multitrack.h:1017
@ LMAP_ERROR_DELETE_FRAMES
Definition: multitrack.h:1019
@ LMAP_INFO_SETNAME_CHANGED
Definition: multitrack.h:1029
@ LMAP_ERROR_CLOSE_FILE
Definition: multitrack.h:1018
@ LMAP_ERROR_ALTER_AUDIO
Definition: multitrack.h:1026
@ LMAP_ERROR_SHIFT_AUDIO
Definition: multitrack.h:1025
void mt_show_current_frame(lives_mt *, boolean return_layer)
preview the current frame
Definition: multitrack.c:3214
void set_track_label_string(lives_mt *mt, int track, const char *label)
Definition: multitrack.c:10366
void insert_audio_at_ctx_cb(LiVESMenuItem *, livespointer mt)
Definition: multitrack.c:14291
void remove_first_gaps(LiVESMenuItem *, livespointer mt)
Definition: multitrack.c:14640
void mouse_mode_context(lives_mt *)
Definition: multitrack.c:4916
void mt_init_tracks(lives_mt *, boolean set_min_max)
add basic tracks, or set tracks from mt->event_list
Definition: multitrack.c:9679
lives_mt_grav_mode_t
Definition: multitrack.h:84
@ GRAV_MODE_RIGHT
Definition: multitrack.h:87
@ GRAV_MODE_LEFT
Definition: multitrack.h:86
@ GRAV_MODE_NORMAL
Definition: multitrack.h:85
void on_cback_audio_activate(LiVESMenuItem *, livespointer mt)
Definition: multitrack.c:16071
lives_mt_mouse_mode_t
Definition: multitrack.h:69
@ MOUSE_MODE_COPY
Definition: multitrack.h:72
@ MOUSE_MODE_SELECT
Definition: multitrack.h:71
@ MOUSE_MODE_MOVE
Definition: multitrack.h:70
boolean on_track_between_release(LiVESWidget *eventbox, LiVESXEventButton *, livespointer mt)
Definition: multitrack.c:13958
LiVESList * load_layout_map(void)
Definition: multitrack.c:19584
void remove_markers(weed_plant_t *event_list)
Definition: multitrack.c:21918
void delete_block_cb(LiVESMenuItem *, livespointer mt)
Definition: multitrack.c:14299
boolean mt_load_recovery_layout(lives_mt *)
Definition: multitrack.c:941
boolean save_event_list_inner(lives_mt *, int fd, weed_plant_t *event_list, unsigned char **mem)
Definition: multitrack.c:252
void insert_frames(int filenum, ticks_t offset_start, ticks_t offset_end, ticks_t tc, lives_direction_t direction, LiVESWidget *eventbox, lives_mt *, track_rect *in_block)
void on_fx_insb_clicked(LiVESWidget *button, livespointer mt)
Definition: multitrack.c:18920
void selblock_cb(LiVESMenuItem *, livespointer mt)
Definition: multitrack.c:14306
void set_timeline_end_secs(lives_mt *, double secs)
Definition: multitrack.c:3134
void mt_delete_clips(lives_mt *, int file)
Definition: multitrack.c:10800
boolean on_track_move(LiVESWidget *widget, LiVESXEventMotion *event, livespointer mt)
Definition: multitrack.c:14112
double mt_get_block_entime(lives_mt *, int ntrack, int iblock)
get timeline start time of block
Definition: multitrack.c:23092
void avel_spin_changed(LiVESSpinButton *, livespointer mt)
Definition: multitrack.c:12548
void remove_current_from_affected_layouts(lives_mt *)
Definition: multitrack.c:5851
void stored_event_list_free_all(boolean wiped)
Definition: multitrack.c:5897
void multitrack_playall(lives_mt *)
Definition: multitrack.c:17345
void remove_gaps(LiVESMenuItem *, livespointer mt)
Definition: multitrack.c:14648
void free_thumb_cache(int fnum, frames_t fromframe)
Definition: multitrack.c:1148
boolean mt_track_is_audio(lives_mt *, int ntrack)
return TRUE if ntrack is a valid backing audio track
Definition: multitrack.c:23048
boolean on_track_click(LiVESWidget *eventbox, LiVESXEventButton *, livespointer mt)
Definition: multitrack.c:13969
ulong mt_get_last_block_uid(lives_mt *mt)
get index of last inserted (wallclock time) block for track
Definition: multitrack.c:23054
void list_fx_here_cb(LiVESMenuItem *, livespointer mt)
Definition: multitrack.c:14313
void unpaint_lines(lives_mt *)
Definition: multitrack.c:14150
void mt_prepare_for_playback(lives_mt *)
Definition: multitrack.c:17259
void avel_reverse_toggled(LiVESToggleButton *, livespointer mt)
Definition: multitrack.c:12500
double mt_get_block_sttime(lives_mt *, int ntrack, int iblock)
return time in seconds of first frame event in block
Definition: multitrack.c:23084
void track_select(lives_mt *)
must call after setting mt->current_track
Definition: multitrack.c:1941
#define TIMECODE_LENGTH
length of timecode text entry, must be > 12
Definition: multitrack.h:35
void insert_audio(int filenum, ticks_t offset_start, ticks_t offset_end, ticks_t tc, double avel, lives_direction_t direction, LiVESWidget *eventbox, lives_mt *, track_rect *in_block)
boolean add_mt_param_box(lives_mt *)
Definition: multitrack.c:1740
void polymorph(lives_mt *, lives_mt_poly_state_t poly)
Definition: multitrack.c:12777
void show_clipinfo_cb(LiVESMenuItem *, livespointer mt)
Definition: multitrack.c:14273
void ** mt_get_pchain(void)
Definition: multitrack.c:1033
boolean write_backup_layout_numbering(lives_mt *)
Definition: multitrack.c:668
LiVESList * layout_frame_is_affected(int clipno, int start, int end, LiVESList *xlays)
Definition: multitrack.c:22247
void event_list_free_undos(lives_mt *)
Definition: multitrack.c:5827
void on_insgap_sel_activate(LiVESMenuItem *, livespointer mt)
Definition: multitrack.c:14982
char * set_values_from_defs(lives_mt *, boolean from_prefs)
Definition: multitrack.c:5768
void clear_context(lives_mt *)
Definition: multitrack.c:11693
int add_video_track_front(LiVESMenuItem *, livespointer mt)
Definition: multitrack.c:10533
void in_out_start_changed(LiVESWidget *, livespointer mt)
Definition: multitrack.c:11897
void on_prev_node_clicked(LiVESWidget *, livespointer mt)
Definition: multitrack.c:19221
void activate_mt_preview(lives_mt *)
sensitize Show Preview and Apply buttons
Definition: multitrack.c:19400
boolean on_timeline_press(LiVESWidget *, LiVESXEventButton *, livespointer mt)
Definition: multitrack.c:18739
void insert_here_cb(LiVESMenuItem *, livespointer mt)
Definition: multitrack.c:14244
lives_mt_nb_error_t
Definition: multitrack.h:113
@ NB_ERROR_NOTRANS
Definition: multitrack.h:116
@ NB_ERROR_NOCLIP
Definition: multitrack.h:118
@ NB_ERROR_NOEFFECT
Definition: multitrack.h:115
@ NB_ERROR_SEL
Definition: multitrack.h:114
@ NB_ERROR_NOCOMP
Definition: multitrack.h:117
lives_mt_poly_state_t
Definition: multitrack.h:121
@ POLY_CLIPS
Definition: multitrack.h:123
@ POLY_TRANS
Definition: multitrack.h:128
@ POLY_FX_STACK
Definition: multitrack.h:125
@ POLY_IN_OUT
Definition: multitrack.h:124
@ POLY_EFFECTS
Definition: multitrack.h:127
@ POLY_NONE
Definition: multitrack.h:122
@ POLY_PARAMS
Definition: multitrack.h:126
@ POLY_COMP
Definition: multitrack.h:129
void mt_do_autotransition(lives_mt *, track_rect *block)
call this on a block to apply autotransition on it
Definition: multitrack.c:23119
void on_next_node_clicked(LiVESWidget *, livespointer mt)
Definition: multitrack.c:19207
boolean on_multitrack_activate(LiVESMenuItem *menuitem, weed_plant_t *event_list)
menuitem callback
Definition: multitrack.c:11024
void * find_init_event_in_ttable(ttable *trans_table, uint64_t in, boolean normal)
Definition: multitrack.c:20253
void wipe_layout(lives_mt *)
Definition: multitrack.c:21936
void on_resetp_clicked(LiVESWidget *, livespointer mt)
Definition: multitrack.c:19140
void show_preview(lives_mt *, ticks_t tc)
boolean on_track_release(LiVESWidget *eventbox, LiVESXEventButton *event, livespointer mt)
Definition: multitrack.c:13773
boolean on_timeline_release(LiVESWidget *, LiVESXEventButton *, livespointer mt)
Definition: multitrack.c:18622
void set_mt_colours(lives_mt *)
Definition: multitrack.c:6148
void mt_desensitise(lives_mt *)
Definition: multitrack.c:16979
int get_clip_for_block(track_rect *block)
Definition: multitrack.c:23107
void mt_fixup_events(lives_mt *, weed_plant_t *old_event, weed_plant_t *new_event)
Definition: multitrack.c:19321
weed_plant_t * load_event_list(lives_mt *, char *eload_file)
Definition: multitrack.c:21693
boolean resize_timeline(lives_mt *)
Definition: multitrack.c:11721
LiVESWidget * window
Definition: multitrack.h:699
LiVESWidget * inv_checkbutton
Definition: multitrack.h:703
ulong * ch_slider_fns
Definition: multitrack.h:704
LiVESWidget * gang_checkbutton
Definition: multitrack.h:702
LiVESWidget ** ch_sliders
Definition: multitrack.h:701
lives_mt * mt
Definition: multitrack.h:706
LiVESWidget * main_hbox
Definition: multitrack.h:700
boolean snap_over
snap to overlap
Definition: multitrack.h:154
lives_mt_grav_mode_t grav_mode
Definition: multitrack.h:155
boolean follow_playback
Definition: multitrack.h:160
double ptr_time
Definition: multitrack.h:174
int back_audio_tracks
number of backing audio tracks (currently 0 or 1)
Definition: multitrack.h:166
boolean insert_audio
do we insert audio with video ?
Definition: multitrack.h:161
boolean move_effects
should we move effects attached to a block ?
Definition: multitrack.h:152
boolean ign_ins_sel
Definition: multitrack.h:159
boolean render_audp
render audio
Definition: multitrack.h:168
boolean show_info
Definition: multitrack.h:171
boolean gang_audio
gang layer audio volume levels
Definition: multitrack.h:164
boolean render_vidp
render video
Definition: multitrack.h:167
int hpaned_pos
Definition: multitrack.h:172
int vpaned_pos
Definition: multitrack.h:173
LiVESList * aparam_view_list
Definition: multitrack.h:175
lives_mt_mouse_mode_t mouse_mode
Definition: multitrack.h:156
lives_mt_insert_mode_t insert_mode
Definition: multitrack.h:157
boolean audio_bleedthru
should we allow all audio to bleed thru ?
Definition: multitrack.h:163
boolean normalise_audp
normalise audio
Definition: multitrack.h:169
boolean overlay_timecode
Definition: multitrack.h:170
boolean pertrack_audio
do we want pertrack audio ?
Definition: multitrack.h:162
boolean set
have we set opts (in mainw) ?
Definition: multitrack.h:151
boolean fx_auto_preview
Definition: multitrack.h:153
boolean show_audio
Definition: multitrack.h:158
boolean autocross_audio
crossfade audio with autotransitions
Definition: multitrack.h:165
LiVESWidget * follow_play
Definition: multitrack.h:333
LiVESWidget * timeline_table
Definition: multitrack.h:202
char timestring[TIMECODE_LENGTH]
Definition: multitrack.h:625
LiVESWidget * amix_label
Definition: multitrack.h:361
double tl_fixed_length
length of timeline can be fixed (secs) : TODO
Definition: multitrack.h:522
LiVESWidget * remove_first_gaps
Definition: multitrack.h:301
LiVESWidget * fx_edit
Definition: multitrack.h:235
LiVESWidget * timeline_reg
Definition: multitrack.h:205
LiVESWidget * node_scale
Definition: multitrack.h:286
LiVESWidget * clear_marks
Definition: multitrack.h:328
LiVESWidget * change_max_disp
Definition: multitrack.h:334
ticks_t insert_start
Definition: multitrack.h:566
boolean ignore_load_vals
Definition: multitrack.h:611
mt_opts opts
Definition: multitrack.h:596
LiVESWidget * add_vid_front
Definition: multitrack.h:336
LiVESWidget * context_frame
Definition: multitrack.h:347
LiVESWidget * bleedthru
Definition: multitrack.h:357
ulong mouse_mot2
Definition: multitrack.h:561
int user_asamps
Definition: multitrack.h:618
weed_plant_t * event_list
Definition: multitrack.h:493
weed_plant_t * specific_event
a pointer to some generally interesting event
Definition: multitrack.h:634
LiVESWidget * nb_label6
Definition: multitrack.h:380
LiVESWidgetObject * spinbutton_in_adj
Definition: multitrack.h:438
LiVESToolItem * sep3
Definition: multitrack.h:385
LiVESWidget * view_sel_events
Definition: multitrack.h:345
LiVESWidget * in_hbox
Definition: multitrack.h:190
LiVESWidget * solo_check
Definition: multitrack.h:343
ulong check_end_func
Definition: multitrack.h:465
LiVESWidget * param_box
Definition: multitrack.h:280
LiVESWidget * nb_label
Definition: multitrack.h:349
boolean no_expose_frame
Definition: multitrack.h:685
lives_cursor_t cursor_style
Definition: multitrack.h:639
LiVESWidget * fx_list_vbox
Definition: multitrack.h:310
lives_painter_surface_t * tl_reg_surf
Definition: multitrack.h:490
LiVESWidget * ins_submenu
Definition: multitrack.h:370
LiVESWidget * timeline
Definition: multitrack.h:203
LiVESWidget * stop
Definition: multitrack.h:207
LiVESToolItem * eview_button
Definition: multitrack.h:331
LiVESWidget * btoolbary
Definition: multitrack.h:356
LiVESWidget * hbox
Definition: multitrack.h:184
LiVESWidget * param_inner_box
Definition: multitrack.h:279
LiVESWidget * scroll_label
Definition: multitrack.h:352
LiVESWidget * view_menu
Definition: multitrack.h:404
ulong spin_end_func
Definition: multitrack.h:607
LiVESWidget * aparam_submenu
Definition: multitrack.h:322
LiVESWidget * timecode
Definition: multitrack.h:271
ulong spin_avel_func
Definition: multitrack.h:463
LiVESWidget * message_box
Definition: multitrack.h:227
LiVESWidget * menubar
Definition: multitrack.h:180
LiVESWidget * normalise_aud
Definition: multitrack.h:326
LiVESWidget * sep4
Definition: multitrack.h:386
LiVESWidget * prev_fm_button
Definition: multitrack.h:312
LiVESWidget * dumlabel2
Definition: multitrack.h:364
LiVESWidget * context_scroll
Definition: multitrack.h:198
LiVESWidget * grav_submenu
Definition: multitrack.h:369
LiVESWidget * scrollbar
Definition: multitrack.h:218
int sel_x
Definition: multitrack.h:557
LiVESWidget * show_devopts
Definition: multitrack.h:341
double end_secs
max display time of timeline in seconds
Definition: multitrack.h:499
LiVESList * audio_draws
list of audio boxes, 0 == backing audio, 1 == track 0 audio, etc.
Definition: multitrack.h:444
LiVESWidget * insa_label
Definition: multitrack.h:359
boolean pr_audio
TRUE if we are in the process of prerendering audio to a clip.
Definition: multitrack.h:532
LiVESWidget * fx_region_3
Definition: multitrack.h:242
LiVESWidget * tc_to_rs
Definition: multitrack.h:293
LiVESWidget * recent[N_RECENT_FILES]
Definition: multitrack.h:418
ulong mm_select_func
Definition: multitrack.h:469
boolean is_rendering
TRUE if we are in the process of rendering/pre-rendering to a clip, cf. mainw->is_rendering.
Definition: multitrack.h:531
LiVESWidget * sep_image
Definition: multitrack.h:199
int file_selected
actual LiVES file struct number which clip_selected matches
Definition: multitrack.h:506
lives_painter_surface_t * tl_surf
Definition: multitrack.h:491
LiVESWidget * tools_menu
Definition: multitrack.h:402
int user_achans
Definition: multitrack.h:617
int clip_selected
clip in clip window
Definition: multitrack.h:505
int play_width
Definition: multitrack.h:644
int exact_preview
Definition: multitrack.h:621
LiVESWidget * r_sel_arrow
Definition: multitrack.h:289
LiVESWidget * overlap_label
Definition: multitrack.h:360
LiVESWidget * fx_box
Definition: multitrack.h:277
LiVESWidget * prerender_aud
Definition: multitrack.h:226
char undo_text[32]
Definition: multitrack.h:578
track_rect * putative_block
putative block to move or copy, or NULL
Definition: multitrack.h:518
LiVESWidget * spinbutton_out
Definition: multitrack.h:268
ulong mute_audio_func
Definition: multitrack.h:478
boolean is_atrans
Definition: multitrack.h:682
LiVESWidget * dumlabel1
Definition: multitrack.h:363
LiVESWidget * sepwin
Definition: multitrack.h:209
ulong tc_func
Definition: multitrack.h:483
weed_plant_t * solo_inst
instance to view solo in the frame preview
Definition: multitrack.h:627
LiVESWidget * preview_frame
Definition: multitrack.h:353
LiVESWidget * files_menu
Definition: multitrack.h:396
LiVESWidget * fx_region_v
Definition: multitrack.h:237
LiVESWidget * nb_label7
Definition: multitrack.h:381
boolean moving_block
moving block flag
Definition: multitrack.h:550
LiVESWidget * checkbutton_start_anchored
Definition: multitrack.h:269
LiVESWidget * nb_label3
Definition: multitrack.h:377
LiVESWidget * close
Definition: multitrack.h:426
LiVESWidgetObject * spinbutton_out_adj
Definition: multitrack.h:439
uint32_t idlefunc
autobackup function
Definition: multitrack.h:671
LiVESWidget * rs_to_tc
Definition: multitrack.h:295
LiVESWidget * mute_audio
Definition: multitrack.h:210
LiVESWidget * effects_menu
Definition: multitrack.h:399
LiVESWidget * play_menu
Definition: multitrack.h:398
LiVESWidget * render_menu
Definition: multitrack.h:403
LiVESWidget * mm_label
Definition: multitrack.h:373
LiVESWidget * sel_label
Definition: multitrack.h:287
double user_fps
Definition: multitrack.h:613
boolean sel_locked
Definition: multitrack.h:540
ulong sepwin_func
Definition: multitrack.h:477
LiVESWidget * next_node_button
Definition: multitrack.h:281
LiVESWidget * load_set
Definition: multitrack.h:423
lives_painter_surface_t * pbox_surface
Definition: multitrack.h:487
LiVESWidget * mm_submenu
Definition: multitrack.h:371
LiVESWidget * view_clips
Definition: multitrack.h:259
LiVESWidget * tc_to_re
Definition: multitrack.h:294
ulong grav_normal_func
Definition: multitrack.h:473
LiVESWidget * fx_label
Definition: multitrack.h:278
LiVESWidgetObject * hadjustment
Definition: multitrack.h:441
LiVESWidgetObject * node_adj
Definition: multitrack.h:442
LiVESWidget * avel_box
Definition: multitrack.h:263
LiVESPixbuf * frame_pixbuf
Definition: multitrack.h:455
LiVESWidget * rename_track
Definition: multitrack.h:315
LiVESWidget * playsel
Definition: multitrack.h:220
LiVESWidget * last_filter_map
Definition: multitrack.h:305
LiVESWidget * playall
Definition: multitrack.h:219
LiVESWidget * context_box
Definition: multitrack.h:197
LiVESWidget * undo
Definition: multitrack.h:297
int play_height
Definition: multitrack.h:645
LiVESWidget * checkbutton_avel_reverse
Definition: multitrack.h:264
double pb_start_time
playback start time in seconds. If play is stopped (not paused) we return to here.
Definition: multitrack.h:552
lives_rfx_t * current_rfx
Definition: multitrack.h:542
LiVESWidget * clipedit
Definition: multitrack.h:215
LiVESWidget * eventbox
Definition: multitrack.h:351
LiVESWidget * backup
Definition: multitrack.h:433
LiVESWidget * mm_move
Definition: multitrack.h:247
LiVESWidget * fx_iafter_button
Definition: multitrack.h:314
LiVESWidget * ins_menuitem
Definition: multitrack.h:249
LiVESWidget * hseparator2
Definition: multitrack.h:394
boolean tl_selecting
for mouse select mode
Definition: multitrack.h:563
LiVESWidget * save_set
Definition: multitrack.h:424
ulong check_avel_rev_func
Definition: multitrack.h:466
uint8_t * undo_mem
Definition: multitrack.h:574
ulong mouse_mot1
Definition: multitrack.h:560
LiVESWidget * xtravbox
Definition: multitrack.h:183
LiVESWidget * atrans_menuitem
Definition: multitrack.h:243
double insert_avel
override for avel used during audio insert
Definition: multitrack.h:570
LiVESWidget * gens_submenu
Definition: multitrack.h:430
double prev_fx_time
Definition: multitrack.h:677
LiVESWidget * ins_normal
Definition: multitrack.h:250
LiVESWidget * fx_list_box
Definition: multitrack.h:307
boolean no_expose
block timeline expose while we are exiting
Definition: multitrack.h:659
LiVESWidget * clear_event_list
menuitem
Definition: multitrack.h:292
ulong mm_move_func
Definition: multitrack.h:468
int render_file
Definition: multitrack.h:513
boolean redoable
Definition: multitrack.h:582
char redo_text[32]
Definition: multitrack.h:579
LiVESWidget * quit
Definition: multitrack.h:338
LiVESWidget * spinbutton_start
Definition: multitrack.h:272
boolean was_undo_redo
Definition: multitrack.h:657
double region_init
point where user pressed the mouse
Definition: multitrack.h:528
LiVESWidget * grav_label
Definition: multitrack.h:252
LiVESWidget * prev_node_button
Definition: multitrack.h:282
boolean region_updating
Definition: multitrack.h:529
ulong spin_in_func
Definition: multitrack.h:461
weed_plant_t * pb_start_event
FRAME event from which we start playback.
Definition: multitrack.h:631
LiVESWidget * audio_insert
Definition: multitrack.h:213
LiVESWidget * fx_delete
Definition: multitrack.h:234
LiVESWidget * out_frame
Definition: multitrack.h:193
LiVESWidget * render_vid
Definition: multitrack.h:324
lives_painter_surface_t * tl_ev_surf
Definition: multitrack.h:489
LiVESWidget * troubleshoot
Definition: multitrack.h:339
LiVESWidget * checkbutton_end_anchored
Definition: multitrack.h:270
LiVESWidget * play_blank
Definition: multitrack.h:185
boolean use_context
Definition: multitrack.h:637
LiVESWidget * in_frame
Definition: multitrack.h:192
LiVESWidget * tl_eventbox
Definition: multitrack.h:201
boolean is_paused
Definition: multitrack.h:641
LiVESWidget * hpaned
Definition: multitrack.h:217
LiVESWidget * aload_subs
Definition: multitrack.h:317
int user_height
Definition: multitrack.h:615
lives_painter_surface_t * insurface
Definition: multitrack.h:459
LiVESWidget * nb
Definition: multitrack.h:348
LiVESWidget * time_scrollbar
Definition: multitrack.h:420
LiVESWidget * spinbutton_avel
Definition: multitrack.h:265
lives_mt_poly_state_t poly_state
state of polymorph window
Definition: multitrack.h:511
LiVESList * clip_labels
Definition: multitrack.h:673
char layout_name[PATH_MAX]
Definition: multitrack.h:544
LiVESWidget * ins_label
Definition: multitrack.h:372
lives_painter_surface_t * outsurface
Definition: multitrack.h:459
LiVESWidget * clear_ds
Definition: multitrack.h:428
char * force_load_name
pointer to a string which contains a filename to be force loaded when load_event_list_activate() is c...
Definition: multitrack.h:687
LiVESWidget * capture
Definition: multitrack.h:431
LiVESWidget * clip_inner_box
Definition: multitrack.h:188
LiVESWidget * delblock
Definition: multitrack.h:214
ulong loop_cont_func
Definition: multitrack.h:479
ulong grav_right_func
Definition: multitrack.h:475
LiVESWidget * select_track
Definition: multitrack.h:256
LiVESWidget * apply_fx_button
Definition: multitrack.h:330
boolean is_ready
Definition: multitrack.h:661
LiVESWidget * fx_base_box
Definition: multitrack.h:275
LiVESWidget * view_effects
Definition: multitrack.h:261
LiVESWidget * top_eventbox
Definition: multitrack.h:365
LiVESWidget * poly_box
Definition: multitrack.h:186
LiVESWidget * nb_label1
Definition: multitrack.h:375
boolean block_node_spin
set to TRUE to block moving node spinner (prevents loops with the timeline)
Definition: multitrack.h:680
LiVESWidget * infobar
Definition: multitrack.h:206
boolean auto_changed
changed since last auto-saved
Definition: multitrack.h:585
LiVESWidget * mark_jumpnext
Definition: multitrack.h:223
LiVESWidget * del_node_button
Definition: multitrack.h:283
LiVESWidget * move_fx
Definition: multitrack.h:245
LiVESWidget * render
Definition: multitrack.h:225
LiVESWidget * mm_menuitem
Definition: multitrack.h:246
LiVESWidget * ins_gap_cur
Definition: multitrack.h:304
LiVESList * undos
Definition: multitrack.h:572
double region_end
end of time region in seconds (or 0.)
Definition: multitrack.h:527
ticks_t insert_end
Definition: multitrack.h:567
LiVESWidget * out_image
Definition: multitrack.h:195
LiVESWidget * fx_list_scroll
Definition: multitrack.h:309
LiVESWidget * preview_eventbox
Definition: multitrack.h:354
double hotspot_x
Definition: multitrack.h:547
boolean playing_sel
are we playing just the time selection ?
Definition: multitrack.h:669
weed_plant_t * moving_fx
Definition: multitrack.h:601
ulong spin_start_func
Definition: multitrack.h:606
LiVESWidget * show_layout_errors
Definition: multitrack.h:421
LiVESWidget * rewind
Definition: multitrack.h:208
LiVESWidget * l_sel_arrow
Definition: multitrack.h:288
boolean layout_set_properties
Definition: multitrack.h:610
boolean tl_mouse
Definition: multitrack.h:667
ulong seltrack_func
Definition: multitrack.h:481
LiVESList * audio_vols_back
layer volume levels (coarse control) - reset levels
Definition: multitrack.h:447
LiVESWidget * hseparator
Definition: multitrack.h:393
int current_track
starts at 0
Definition: multitrack.h:507
size_t undo_buffer_used
Definition: multitrack.h:573
LiVESWidget * fx_region_a
Definition: multitrack.h:238
LiVESWidget * grav_normal
Definition: multitrack.h:253
LiVESWidget * edit_menu
Definition: multitrack.h:397
boolean undoable
Definition: multitrack.h:581
ulong ins_normal_func
Definition: multitrack.h:471
int user_width
Definition: multitrack.h:614
lives_special_framedraw_rect_t * framedraw
Definition: multitrack.h:589
LiVESWidget * tl_hbox
Definition: multitrack.h:274
LiVESWidget * recent_menu
Definition: multitrack.h:417
double fps
fps of this timeline
Definition: multitrack.h:524
ulong check_start_func
Definition: multitrack.h:464
LiVESWidget * jumpnext
Definition: multitrack.h:221
off_t undo_offset
Definition: multitrack.h:575
boolean has_audio_file
Definition: multitrack.h:665
LiVESWidget * seldesel_menuitem
Definition: multitrack.h:257
int top_track
top (video) track in scrolled window
Definition: multitrack.h:653
LiVESWidget * fx_blockv
Definition: multitrack.h:232
weed_plant_t * avol_init_event
Definition: multitrack.h:604
LiVESWidget * mark_jumpback
Definition: multitrack.h:224
LiVESWidget * load_event_list
menuitem
Definition: multitrack.h:291
LiVESWidget * btoolbarx
Definition: multitrack.h:355
LiVESWidget * nb_label4
Definition: multitrack.h:378
LiVESWidget * fx_region_2v
Definition: multitrack.h:240
LiVESWidget * btoolbar3
Definition: multitrack.h:389
LiVESWidget * fx_region_2a
Definition: multitrack.h:241
LiVESWidget * cback_audio
Definition: multitrack.h:316
boolean layout_prompt
on occasion, prompt user if they want to correct layout on disk or not
Definition: multitrack.h:609
LiVESWidget * fx_list_label
Definition: multitrack.h:308
LiVESWidget * fx_params_label
Definition: multitrack.h:342
int preview_layer
Definition: multitrack.h:623
LiVESWidget * re_to_tc
Definition: multitrack.h:296
int selected_filter
filter selected in poly window tab
Definition: multitrack.h:651
LiVESWidget * adjust_start_end
Definition: multitrack.h:346
LiVESWidget * show_quota
Definition: multitrack.h:262
LiVESWidget * loop_continue
Definition: multitrack.h:211
LiVESWidget * render_sep
Definition: multitrack.h:323
LiVESWidget * msg_area
Definition: multitrack.h:228
int user_signed_endian
Definition: multitrack.h:619
LiVESList * tl_marks
Definition: multitrack.h:629
LiVESWidget * fx_region_2av
Definition: multitrack.h:239
LiVESWidget * menu_hbox
Definition: multitrack.h:391
double region_start
start of time region in seconds (or 0.)
Definition: multitrack.h:526
LiVESAccelGroup * accel_group
Definition: multitrack.h:449
LiVESWidget * nb_label2
Definition: multitrack.h:376
LiVESWidget * change_vals
Definition: multitrack.h:319
LiVESWidget * aparam_separator
Definition: multitrack.h:320
LiVESWidget * grav_right
Definition: multitrack.h:255
boolean aud_track_selected
Definition: multitrack.h:663
LiVESList * selected_tracks
Definition: multitrack.h:509
LiVESWidget * ins_gap_sel
Definition: multitrack.h:303
boolean block_tl_move
set to TRUE to block moving timeline (prevents loops with the node spinbutton)
Definition: multitrack.h:679
LiVESWidget * in_image
Definition: multitrack.h:194
LiVESWidget * split_sel
Definition: multitrack.h:302
int user_arate
Definition: multitrack.h:616
LiVESWidget * time_label
Definition: multitrack.h:358
boolean redraw_block
block drawing of playback cursor during track redraws
Definition: multitrack.h:655
int current_fx
Definition: multitrack.h:534
LiVESWidget * fd_frame
Definition: multitrack.h:329
boolean in_sensitise
Definition: multitrack.h:538
LiVESWidget * amixer_button
Definition: multitrack.h:344
int num_video_tracks
Definition: multitrack.h:498
LiVESList * video_draws
list of video timeline eventboxes, in layer order
Definition: multitrack.h:450
LiVESWidget * view_in_out
Definition: multitrack.h:260
LiVESWidget * show_info
Definition: multitrack.h:337
LiVESWidget * fx_block
Definition: multitrack.h:231
weed_plant_t * init_event
current editable values
Definition: multitrack.h:495
LiVESAdjustment * msg_adj
Definition: multitrack.h:230
LiVESWidget * top_vbox
Definition: multitrack.h:181
LiVESWidget * view_audio
Definition: multitrack.h:327
LiVESWidget * mm_select
Definition: multitrack.h:248
LiVESWidget * add_vid_behind
Definition: multitrack.h:335
ulong grav_left_func
Definition: multitrack.h:474
boolean changed
changed since last saved
Definition: multitrack.h:584
LiVESWidget * msg_scrollbar
Definition: multitrack.h:229
LiVESWidget * tlx_vbox
Definition: multitrack.h:367
LiVESWidget * insert
Definition: multitrack.h:212
LiVESWidget * avel_scale
Definition: multitrack.h:266
int track_index
Definition: multitrack.h:590
LiVESWidget * out_hbox
Definition: multitrack.h:191
lives_mt_last_fx_type_t last_fx_type
Definition: multitrack.h:592
int hotspot_y
Definition: multitrack.h:548
LiVESWidget * tracks_menu
Definition: multitrack.h:400
LiVESWidget * jumpback
Definition: multitrack.h:222
LiVESList * cb_list
Definition: multitrack.h:457
LiVESWidget * next_fm_button
Definition: multitrack.h:311
LiVESWidget * timeline_table_header
Definition: multitrack.h:200
LiVESToolItem * sep2
Definition: multitrack.h:384
track_rect * block_selected
pointer to current selected block, or NULL
Definition: multitrack.h:517
LiVESWidget * fx_blocka
Definition: multitrack.h:233
LiVESWidget * grav_left
Definition: multitrack.h:254
LiVESWidget * vpaned
Definition: multitrack.h:216
LiVESWidget * in_out_box
Definition: multitrack.h:189
ulong spin_out_func
Definition: multitrack.h:462
double context_time
this is set when the user right clicks on a track, otherwise -1.
Definition: multitrack.h:636
LiVESXDisplay * display
Definition: multitrack.h:453
boolean auto_reloading
Definition: multitrack.h:598
double tl_max
Definition: multitrack.h:503
boolean mt_frame_preview
Definition: multitrack.h:536
LiVESWidget * aparam_menuitem
Definition: multitrack.h:321
double ptr_time
stored timeline cursor position before playback
Definition: multitrack.h:520
LiVESWidget * open_menu
Definition: multitrack.h:407
LiVESWidget * node_spinbutton
Definition: multitrack.h:285
double pb_unpaused_start_time
playback start time in seconds. If play is stopped (not paused) we return to here.
Definition: multitrack.h:553
lives_direction_t last_direction
last direction timeline cursor was moved in
Definition: multitrack.h:515
LiVESWidget * timeline_eb
Definition: multitrack.h:204
LiVESWidget * ac_audio_check
Definition: multitrack.h:299
LiVESWidget * grav_menuitem
Definition: multitrack.h:251
LiVESWidgetObject * vadjustment
Definition: multitrack.h:451
LiVESWidget * expl_missing
Definition: multitrack.h:340
LiVESWidget * spinbutton_end
Definition: multitrack.h:273
boolean no_frame_update
< force some visual changes when applying autotrans
Definition: multitrack.h:684
LiVESWidget * clip_scroll
Definition: multitrack.h:187
LiVESWidget * help_menu
Definition: multitrack.h:405
LiVESWidget * load_vals
Definition: multitrack.h:318
LiVESWidget * insa_checkbutton
Definition: multitrack.h:435
LiVESWidget * fx_contents_box
Definition: multitrack.h:276
lives_mt_fx_order_t fx_order
Definition: multitrack.h:594
LiVESWidget * top_vpaned
Definition: multitrack.h:182
LiVESWidget * btoolbar2
Definition: multitrack.h:388
double tl_min
Definition: multitrack.h:502
boolean did_backup
Definition: multitrack.h:576
LiVESWidget * save_event_list
menuitem
Definition: multitrack.h:290
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:632
weed_plant_t * fm_edit_event
Definition: multitrack.h:600
LiVESWidget * scrolledwindow
Definition: multitrack.h:196
LiVESWidget * tl_label
Definition: multitrack.h:362
LiVESWidget * redo
Definition: multitrack.h:298
LiVESWidget * nb_label5
Definition: multitrack.h:379
LiVESWidget * snapo_checkbutton
Definition: multitrack.h:436
LiVESWidget * resetp_button
Definition: multitrack.h:284
LiVESList * audio_vols
layer volume levels (coarse control) - set in mixer
Definition: multitrack.h:446
LiVESWidget * eview_label
Definition: multitrack.h:332
LiVESWidget * render_aud
Definition: multitrack.h:325
LiVESWidget * remove_gaps
Definition: multitrack.h:300
LiVESWidget * spinbutton_in
Definition: multitrack.h:267
LiVESWidget * fx_region
Definition: multitrack.h:236
LiVESWidget * next_filter_map
Definition: multitrack.h:306
LiVESWidget * fx_ibefore_button
Definition: multitrack.h:313
LiVESWidget * selection_menu
Definition: multitrack.h:401
ticks_t auto_back_time
time when last backup was done (not to be confused with prefs->auto_back)
Definition: multitrack.h:587
int avol_fx
index of audio volume filter, delegated by user from audio volume candidates
Definition: multitrack.h:603
weed_plant_t * selected_init_event
currently selected in list
Definition: multitrack.h:496
lives_amixer_t * amixer
Definition: multitrack.h:675
LiVESWidget * submenu_atransfx
Definition: multitrack.h:244
LiVESToolItem * sep1
Definition: multitrack.h:383
int sel_y
Definition: multitrack.h:558
LiVESWidget * view_events
Definition: multitrack.h:258
LiVESWidget * tlx_eventbox
Definition: multitrack.h:366
track rectangles (blocks), we translate our event_list FRAME events into these, then when exposed,...
Definition: multitrack.h:719
weed_plant_t * end_event
Definition: multitrack.h:725
LiVESWidget * eventbox
pointer to eventbox widget which contains this block; we can use its "layer_number" to get the track/...
Definition: multitrack.h:735
boolean end_anchored
Definition: multitrack.h:731
ticks_t offset_start
offset in sourcefile of first frame
Definition: multitrack.h:727
lives_mt_block_state_t state
Definition: multitrack.h:729
track_rect * prev
Definition: multitrack.h:723
track_rect * next
Definition: multitrack.h:722
weed_plant_t * start_event
Definition: multitrack.h:724
boolean start_anchored
Definition: multitrack.h:730
boolean ordered
are frames in sequential order ?
Definition: multitrack.h:732
char * name
Definition: multitrack.h:748
char * handle
Definition: multitrack.h:746
int64_t unique_id
Definition: multitrack.h:747
LiVESList * list
Definition: multitrack.h:749
boolean current
Definition: multitrack.h:1038
double atime
Definition: multitrack.h:1037
livespointer data
Definition: multitrack.h:1035
lives_lmap_error_t type
Definition: multitrack.h:1033
char * name
Definition: multitrack.h:1034
size_t data_len
including this mt_undo
Definition: multitrack.h:695
lives_mt_undo_t action
Definition: multitrack.h:692
ticks_t tc
Definition: multitrack.h:693
void * extra
Definition: multitrack.h:694
void * out
Definition: multitrack.h:741
uint64_t in
Definition: multitrack.h:740
lives_cursor_t