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