Go to the documentation of this file.
7 #ifndef HAS_LIVES_MAINWINDOW_H
8 #define HAS_LIVES_MAINWINDOW_H
17 #include <alsa/asoundlib.h>
20 #ifdef HAVE_PULSE_AUDIO
24 #define BILLIONS(n) (n##000000000l)
25 #define ONE_BILLION BILLIONS(1)
26 #define MILLIONS(n) (n##000000l)
27 #define ONE_MILLION MILLIONS(1)
29 #define BILLIONS_DBL(n) (n##000000000.f)
30 #define ONE_BILLION_DBL BILLIONS_DBL(1)
31 #define MILLIONS_DBL(n) (n##000000.)
32 #define ONE_MILLION_DBL MILLIONS_DBL(1)
36 #define TICKS_PER_SECOND ((ticks_t)MILLIONS(100))
37 #define TICKS_PER_SECOND_DBL ((double)TICKS_PER_SECOND)
38 #define USEC_TO_TICKS (TICKS_PER_SECOND / ONE_MILLION)
39 #define TICKS_TO_NANOSEC (ONE_BILLION / TICKS_PER_SECOND)
41 #define LIVES_SHORTEST_TIMEOUT (2. * TICKS_PER_SECOND_DBL) // 2 sec timeout
42 #define LIVES_SHORT_TIMEOUT (5. * TICKS_PER_SECOND_DBL) // 5 sec timeout
43 #define LIVES_DEFAULT_TIMEOUT (10. * TICKS_PER_SECOND_DBL) // 10 sec timeout
44 #define LIVES_LONGER_TIMEOUT (20. * TICKS_PER_SECOND_DBL) // 20 sec timeout
45 #define LIVES_LONGEST_TIMEOUT (30. * TICKS_PER_SECOND_DBL) // 30 sec timeout
50 #define DEF_FPSCHANGE_AMOUNT 30000
53 #define DEF_SCRATCHBACK_AMOUNT 80000
54 #define DEF_SCRATCHFWD_AMOUNT 80000
57 #define DEF_BLENDCHANGE_AMOUNT 100
59 #define LOOP_LOCK_MIN_FRAMES (cfile->pb_fps + 1)
61 #define DEF_DL_BANDWIDTH 5000
66 #define H_RESIZE_ADJUST (widget_opts.packing_width * 2)
67 #define V_RESIZE_ADJUST (widget_opts.packing_height * 2)
71 #define CE_TIMELINE_VSPACE ((int)(420. * widget_opts.scale))
74 #define COMBOWIDTHCHARS 12
77 #define FCWIDTHCHARS 22
80 #define PREVSBWIDTHCHARS 8
83 #define MIN_SEPWIN_WIDTH 600
84 #define MIN_SEPWIN_HEIGHT 36
86 #define MENU_HIDE_LIM 24
89 #define SCR_WIDTH_SAFETY ((int)(100. * widget_opts.scale))
90 #define SCR_HEIGHT_SAFETY ((int)(200. * widget_opts.scale))
93 #define PREVIEW_BOX_HT ((int)(100. * widget_opts.scale))
96 #define TREE_ROW_HEIGHT ((int)(60. * widget_opts.scale))
99 #define GUI_SCREEN_WIDTH (mainw->mgeom[widget_opts.monitor].width)
100 #define GUI_SCREEN_HEIGHT (mainw->mgeom[widget_opts.monitor].height)
101 #define GUI_SCREEN_PHYS_WIDTH (mainw->mgeom[widget_opts.monitor].phys_width)
102 #define GUI_SCREEN_PHYS_HEIGHT (mainw->mgeom[widget_opts.monitor].phys_height)
103 #define GUI_SCREEN_X (mainw->mgeom[widget_opts.monitor].x)
104 #define GUI_SCREEN_Y (mainw->mgeom[widget_opts.monitor].y)
107 #define SCREEN_SCALE_DEF_WIDTH 1600
109 #define SCREEN_169_MIN_WIDTH 1280
110 #define SCREEN_169_MIN_HEIGHT 720
113 #define DEF_FRAME_HSIZE_4K_UNSCALED 3840.
114 #define DEF_FRAME_VSIZE_4K_UNSCALED 2160.
116 #define DEF_FRAME_HSIZE_HDTV_UNSCALED 1920.
117 #define DEF_FRAME_VSIZE_HDTV_UNSCALED 1080.
119 #define DEF_FRAME_HSIZE_169_UNSCALED 1280.
120 #define DEF_FRAME_VSIZE_169_UNSCALED 720.
122 #define DEF_FRAME_HSIZE_43_UNSCALED 1024.
123 #define DEF_FRAME_VSIZE_43_UNSCALED 768.
125 #define DEF_FRAME_HSIZE_43S_UNSCALED 640.
126 #define DEF_FRAME_VSIZE_43S_UNSCALED 480.
128 #define SCREEN_43S_LIMIT_WIDTH DEF_FRAME_HSIZE_43_UNSCALED
129 #define SCREEN_43S_LIMIT_HEIGHT DEF_FRAME_VSIZE_169_UNSCALED
131 #define DEF_FRAME_HSIZE_GUI (((int)(DEF_FRAME_HSIZE_43S_UNSCALED * widget_opts.scale) >> 2) << 1)
132 #define DEF_FRAME_VSIZE_GUI (((int)(DEF_FRAME_VSIZE_43S_UNSCALED * widget_opts.scale) >> 1) << 1)
135 #define MIN_MSGBAR_HEIGHT (widget_opts.scale >= 1. ? ((int)32. * widget_opts.scale) : 46)
136 #define MIN_MSG_AREA_SCRNHEIGHT (DEF_FRAME_VSIZE_GUI + CE_TIMELINE_VSPACE - MIN_MSGBAR_HEIGHT)
137 #define MIN_MSGBOX_LLINES 2
139 #define DEF_FRAME_HSIZE_UNSCALED ((GUI_SCREEN_PHYS_WIDTH >= SCREEN_169_MIN_WIDTH && GUI_SCREEN_PHYS_HEIGHT >= SCREEN_169_MIN_HEIGHT) ? \
140 DEF_FRAME_HSIZE_169_UNSCALED : \
141 (GUI_SCREEN_PHYS_WIDTH >= SCREEN_43S_LIMIT_WIDTH && GUI_SCREEN_PHYS_HEIGHT >= SCREEN_43S_LIMIT_HEIGHT) ? \
142 DEF_FRAME_HSIZE_43_UNSCALED : DEF_FRAME_HSIZE_43S_UNSCALED)
144 #define DEF_FRAME_VSIZE_UNSCALED ((GUI_SCREEN_PHYS_WIDTH >= SCREEN_169_MIN_WIDTH && GUI_SCREEN_PHYS_HEIGHT >= SCREEN_169_MIN_HEIGHT) ? \
145 DEF_FRAME_VSIZE_169_UNSCALED : \
146 (GUI_SCREEN_PHYS_WIDTH >= SCREEN_43S_LIMIT_WIDTH && GUI_SCREEN_PHYS_HEIGHT >= SCREEN_43S_LIMIT_HEIGHT) ? \
147 DEF_FRAME_VSIZE_43_UNSCALED : DEF_FRAME_VSIZE_43S_UNSCALED)
149 #define DEF_GEN_WIDTH DEF_FRAME_HSIZE_UNSCALED
150 #define DEF_GEN_HEIGHT DEF_FRAME_VSIZE_UNSCALED
152 #define DEF_FRAME_HSIZE ((((int)((double)DEF_FRAME_HSIZE_UNSCALED * widget_opts.scale)) >> 2) << 2)
153 #define DEF_FRAME_VSIZE ((((int)((double)DEF_FRAME_VSIZE_UNSCALED * widget_opts.scale)) >> 1) << 1)
155 #define FRAMEBLANK_MIN_WIDTH ((int)(240. * widget_opts.scale))
156 #define FRAMEBLANK_MAX_WIDTH ((int)(600. * widget_opts.scale))
158 #define FRAMEBLANK_MIN_HEIGHT ((int)(180. * widget_opts.scale))
159 #define FRAMEBLANK_MAX_HEIGHT ((int)(400. * widget_opts.scale))
161 #define IMSEP_MAX_HEIGHT ((int)(64. * widget_opts.scale))
162 #define IMSEP_MAX_WIDTH (GUI_SCREEN_WIDTH - 20)
164 #define MAIN_SPIN_SPACER ((int)52. * widget_opts.scale)
166 #define ENC_DETAILS_WIN_H ((int)(DEF_FRAME_HSIZE_43S_UNSCALED * widget_opts.scale))
168 #define ENC_DETAILS_WIN_V (((int)(DEF_FRAME_VSIZE_43S_UNSCALED * widget_opts.scale)) >> 1)
171 #define MIN_MSG_WIDTH_CHARS ((int)(40. * widget_opts.scale))
172 #define MAX_MSG_WIDTH_CHARS ((int)(200. * widget_opts.scale))
174 #define RFX_WINSIZE_H ((int)(GUI_SCREEN_WIDTH >= SCREEN_SCALE_DEF_WIDTH ? 210. * (1. + widget_opts.scale) : \
176 DEF_FRAME_HSIZE_43S_UNSCALED))
177 #define RFX_WINSIZE_V ((int)(DEF_FRAME_VSIZE_43S_UNSCALED * widget_opts.scale))
179 #define DLG_BUTTON_WIDTH ((int)(180. * widget_opts.scale))
180 #define DLG_BUTTON_HEIGHT (widget_opts.css_min_height * 3)
182 #define DEF_BUTTON_WIDTH ((int)(180. * widget_opts.scale))
183 #define DEF_BUTTON_HEIGHT ((((widget_opts.css_min_height >> 1) + 2) >> 1) << 3)
185 #define DEF_DIALOG_WIDTH RFX_WINSIZE_H
186 #define DEF_DIALOG_HEIGHT RFX_WINSIZE_V
188 #define LIVES_MAIN_WINDOW_WIDGET (mainw->LiVES)
189 #define LIVES_MAIN_WIDGET_WINDOW LIVES_MAIN_WINDOW_WIDGET
198 #define FX_KEYS_PHYSICAL 9
199 #define FX_KEYS_PHYSICAL_EXTRA FX_KEYS_PHYSICAL + 2
203 #define FX_KEYS_MAX_VIRTUAL 64
205 #define FX_KEYS_MAX 65536
208 #define EFFECT_NONE 0
209 #define GU641 ((uint64_t)1)
211 #define MAX_FX_THREADS 1024
213 #define LIVES_DEF_DCLICK_TIME 400
214 #define LIVES_DEF_DCLICK_DIST 5
255 #define DVD_AUDIO_CHAN_MIN 128
256 #define DVD_AUDIO_CHAN_DEFAULT 128
257 #define DVD_AUDIO_CHAN_MAX 159
268 #define USE_LIVES_THEMEING (1 << 0)
269 #define LIVES_THEME_DARK (1 << 1)
270 #define LIVES_THEME_COMPACT (1 << 2)
272 #define THEME_DETAIL_NAME "theme_name"
273 #define THEME_DETAIL_STYLE "theme_style"
274 #define THEME_DETAIL_SEPWIN_IMAGE "sepwin_image"
275 #define THEME_DETAIL_FRAMEBLANK_IMAGE "frameblank_image"
276 #define THEME_DETAIL_NORMAL_FORE "normal_fore"
277 #define THEME_DETAIL_NORMAL_BACK "normal_back"
278 #define THEME_DETAIL_ALT_FORE "alt_fore"
279 #define THEME_DETAIL_ALT_BACK "alt_back"
280 #define THEME_DETAIL_INFO_TEXT "info_text"
281 #define THEME_DETAIL_INFO_BASE "info_base"
283 #define THEME_DETAIL_AUDCOL "audcol"
284 #define THEME_DETAIL_VIDCOL "vidcol"
285 #define THEME_DETAIL_FXCOL "fxcol"
286 #define THEME_DETAIL_MT_TLREG "mt_tlreg"
287 #define THEME_DETAIL_MT_MARK "mt_mark"
288 #define THEME_DETAIL_MT_EVBOX "mt_evbox"
289 #define THEME_DETAIL_MT_TCFG "mt_timecode_fg"
290 #define THEME_DETAIL_MT_TCBG "mt_timecode_bg"
291 #define THEME_DETAIL_FRAME_SURROUND "frame_surround"
292 #define THEME_DETAIL_CE_SEL "ce_sel"
293 #define THEME_DETAIL_CE_UNSEL "ce_unsel"
298 #define STYLE_PLAIN 0
299 #define STYLE_1 (1<<0)
300 #define STYLE_2 (1<<1)
301 #define STYLE_3 (1<<2)
302 #define STYLE_4 (1<<3)
304 #define STYLE_LIGHT STYLE_3
360 #if GTK_CHECK_VERSION(3, 22, 0)
361 LiVESXMonitor *monitor;
384 #define EXEC_SMOGRIFY "smogrify"
385 #define EXEC_PERL "perl"
386 #define EXEC_MPLAYER "mplayer"
387 #define EXEC_MPLAYER2 "mplayer2"
388 #define EXEC_MPV "mpv"
391 #define EXEC_SOX "sox"
392 #define EXEC_PULSEAUDIO "pulseaudio"
393 #define EXEC_CONVERT "convert"
394 #define EXEC_COMPOSITE "composite"
395 #define EXEC_IDENTIFY "identify"
396 #define EXEC_FFPROBE "ffprobe"
397 #define EXEC_FFMPEG "ffmpeg"
398 #define EXEC_FILE "file"
399 #define EXEC_YOUTUBE_DL "youtube-dl"
400 #define EXEC_YOUTUBE_DLC "youtube-dlc"
401 #define EXEC_PIP "pip"
403 #define EXEC_MD5SUM "md5"
405 #define EXEC_MD5SUM "md5sum"
407 #define EXEC_GZIP "gzip"
409 #define EXEC_WGET "wget"
410 #define EXEC_CURL "curl"
413 #define EXEC_PYTHON "python"
414 #define EXEC_AUTOLIVES_PL "autolives.pl"
415 #define EXEC_MIDISTART "lives-midistart"
416 #define EXEC_MIDISTOP "lives-midistop"
417 #define EXEC_JACKD "jackd"
418 #define EXEC_DVGRAB "dvgrab"
419 #define EXEC_CDDA2WAV "cdda2wav"
420 #define EXEC_ICEDAX "icedax"
421 #define EXEC_GDB "gdb"
422 #define EXEC_XWININFO "xwininfo"
423 #define EXEC_GCONFTOOL_2 "gconftool-2"
424 #define EXEC_XDG_SCREENSAVER "xdg-screensaver"
426 #define EXEC_WMCTRL "wmctrl"
427 #define EXEC_XDOTOOL "xdotool"
428 #define EXEC_PLAY "play"
429 #define EXEC_GIO "gio"
430 #define EXEC_MKTEMP "mktemp"
431 #define EXEC_SNAP "snap"
434 #define EXEC_SUDO "sudo"
437 #define LIVES_FILE_TYPE_UNKNOWN (0ul)
439 #define LIVES_FILE_TYPE_FIFO (1ul << 0)
440 #define LIVES_FILE_TYPE_CHAR_DEV (1ul << 1)
441 #define LIVES_FILE_TYPE_DIRECTORY (1ul << 2)
442 #define LIVES_FILE_TYPE_BLOCK_DEV ((1ul << 1) | (1ul << 2))
443 #define LIVES_FILE_TYPE_FILE (1ul << 3)
444 #define LIVES_FILE_TYPE_SYMLINK (1ul << 4)
445 #define LIVES_FILE_TYPE_SOCKET (1ul << 5)
447 #define LIVES_FILE_TYPE_PIPE (1ul << 6)
448 #define LIVES_FILE_TYPE_STREAM_LOCAL (1ul << 7)
449 #define LIVES_FILE_TYPE_STREAM_REMOTE (1ul << 8)
451 #define LIVES_FILE_TYPE_MASK (0xFFFF)
453 #define LIVES_FILE_TYPE_FLAG_SYMLINK (1ul << 32)
454 #define LIVES_FILE_TYPE_FLAG_EXECUTABLE (1ul << 33)
455 #define LIVES_FILE_TYPE_FLAG_UNWRITEABLE (1ul << 34)
456 #define LIVES_FILE_TYPE_FLAG_INACCESSIBLE (1ul << 35)
458 #define LIVES_FILE_TYPE_FLAG_EMPTY (1ul << 59)
459 #define LIVES_FILE_TYPE_FLAG_MISSING (1ul << 60)
460 #define LIVES_FILE_TYPE_FLAG_DAMAGED (1ul << 61)
461 #define LIVES_FILE_TYPE_FLAG_INCOMPLETE (1ul << 62)
462 #define LIVES_FILE_TYPE_FLAG_SPECIAL (1ul << 63)
464 #define LIVES_FILE_IS_FILE(ftype) ((ftype & LIVES_FILE_TYPE_FILE) ? TRUE : FALSE)
465 #define LIVES_FILE_IS_DIRECTORY(ftype) ((ftype & LIVES_FILE_TYPE_DIRECTORY) ? TRUE : FALSE)
466 #define LIVES_FILE_IS_BLOCK_DEV(ftype) ((ftype & LIVES_FILE_TYPE_BLOCK_DEV) == LIVES_FILE_TYPE_BLOCK_DEV \
468 #define LIVES_FILE_IS_CHAR_DEV(ftype) ((ftype & LIVES_FILE_TYPE_CHAR_DEV) ? TRUE : FALSE)
470 #define LIVES_FILE_IS_EMPTYY_FILE(ftype) ((ftype & LIVES_FILE_TYPE_FLAG_EMPTY) && LIVES_FILE_IS_FILE(ftype) \
472 #define LIVES_FILE_IS_EMPTY_DIR(ftype) ((ftype & LIVES_FILE_TYPE_FLAG_EMPTY) && LIVES_FILE_IS_DIR(ftype) \
475 #define LIVES_FILE_IS_MISSING(ftype) ((ftype & LIVES_FILE_TYPE_FLAG_MISSING) ? TRUE : FALSE)
478 #define LIVES_IMAGE_TYPE_UNKNOWN ""
479 #define LIVES_IMAGE_TYPE_JPEG "jpeg"
480 #define LIVES_IMAGE_TYPE_PNG "png"
483 #define LIVES_AUDIO_TYPE_PCM "pcm"
486 #define LIVES_FILE_EXT_TMP "tmp"
487 #define LIVES_FILE_EXT_PNG "png"
488 #define LIVES_FILE_EXT_JPG "jpg"
489 #define LIVES_FILE_EXT_MGK "mgk"
490 #define LIVES_FILE_EXT_PRE "pre"
491 #define LIVES_FILE_EXT_NEW "new"
492 #define LIVES_FILE_EXT_MAP "map"
493 #define LIVES_FILE_EXT_SCRAP "scrap"
494 #define LIVES_FILE_EXT_TEXT "txt"
495 #define LIVES_FILE_EXT_BAK "bak"
496 #define LIVES_FILE_EXT_BACK "back"
497 #define LIVES_FILE_EXT_WEBM "webm"
498 #define LIVES_FILE_EXT_MP4 "mp4"
500 #define LIVES_FILE_EXT_BACKUP "lv1"
501 #define LIVES_FILE_EXT_PROJECT "lv2"
503 #define LIVES_FILE_EXT_TAR "tar"
504 #define LIVES_FILE_EXT_GZIP "gz"
505 #define LIVES_FILE_EXT_TAR_GZ LIVES_FILE_EXT_TAR "." LIVES_FILE_EXT_GZIP
507 #define LIVES_FILE_EXT_SRT "srt"
508 #define LIVES_FILE_EXT_SUB "sub"
510 #define LIVES_FILE_EXT_PCM "pcm"
511 #define LIVES_FILE_EXT_WAV "wav"
513 #define LIVES_FILE_EXT_LAYOUT "lay"
515 #define LIVES_FILE_EXT_RFX_SCRIPT "script"
520 #define LIVES_WEBSITE PACKAGE_URL
521 #define LIVES_MANUAL_URL LIVES_WEBSITE "/manual/"
522 #define LIVES_MANUAL_FILENAME "LiVES_manual.html"
523 #define LIVES_AUTHOR_EMAIL "salsaman+lives@gmail.com"
524 #define LIVES_DONATE_URL "https://sourceforge.net/p/lives/donate/"
525 #define LIVES_BUG_URL PACKAGE_BUGREPORT
526 #define LIVES_FEATURE_URL "https://sourceforge.net/p/lives/feature-requests/"
527 #define LIVES_TRANSLATE_URL "https://translations.launchpad.net/lives/trunk"
530 #define DLL_NAME "so"
532 #define LIVES_STATUS_FILE_NAME ".status"
533 #define LIVES_ENC_DEBUG_FILE_NAME ".debug_out"
535 #define TOTALSAVE_NAME "totalsave"
536 #define CLIP_BINFMT_CHECK "LiVESXXX"
537 #define CLIP_AUDIO_FILENAME "audio"
538 #define CLIP_TEMP_AUDIO_FILENAME "audiodump." LIVES_FILE_EXT_PCM
540 #define WORKDIR_LITERAL "workdir"
541 #define WORKDIR_LITERAL_LEN 7
543 #define HEADER_LITERAL "header"
544 #define AHEADER_LITERAL "aheader"
546 #define THEME_LITERAL "theme"
547 #define THEME_SEP_IMG_LITERAL "main"
548 #define THEME_FRAME_IMG_LITERAL "frame"
549 #define THEME_HEADER HEADER_LITERAL "." THEME_LITERAL
550 #define THEME_HEADER_2 THEME_HEADER "_gtk2"
552 #define LIVES_THEME_NONE "none"
553 #define LIVES_THEME_CAMERA "camera"
555 #define LIVES_CLIP_HEADER HEADER_LITERAL ".lives"
556 #define LIVES_ACLIP_HEADER AHEADER_LITERAL ".lives"
557 #define LIVES_CLIP_HEADER_NEW HEADER_LITERAL "." LIVES_FILE_EXT_NEW
558 #define LIVES_ACLIP_HEADER_NEW AHEADER_LITERAL "." LIVES_FILE_EXT_NEW
559 #define LIVES_CLIP_HEADER_OLD HEADER_LITERAL
560 #define LIVES_CLIP_HEADER_OLD2 LIVES_CLIP_HEADER_OLD "2"
562 #define SUBS_FILENAME "subs"
564 #define CLIP_ORDER_FILENAME "order"
566 #define SET_LOCK_FILENAME "lock"
568 #define CLIP_ARCHIVE_NAME "__CLIP_ARCHIVE-"
570 #define LAYOUT_FILENAME "layout"
571 #define LAYOUT_MAP_FILENAME LAYOUT_FILENAME "." LIVES_FILE_EXT_MAP
572 #define LAYOUT_NUMBERING_FILENAME LAYOUT_FILENAME "_numbering"
574 #define TEMPFILE_MARKER "can_remove"
577 #define LIVES_FILENAME_NOREMOVE ".noremove"
578 #define LIVES_FILENAME_INUSE ".inuse"
579 #define LIVES_FILENAME_NOCLEAN ".noclean"
581 #define TRASH_NAME "__TRASH-"
582 #define TRASH_REMOVE "remove"
583 #define TRASH_RECOVER "recover"
584 #define TRASH_LEAVE "leave"
586 #define UNREC_CLIPS_DIR "unrecoverable_clips"
587 #define UNREC_LAYOUTS_DIR "unrecoverable_layouts"
590 #define DATA_DIR "share/lives"
591 #define LIVES_DEVICE_DIR "/dev/"
592 #define LIVES_DEVNULL "/dev/null"
595 #define THEME_DIR "/share/lives/themes/"
596 #define PLUGIN_SCRIPTS_DIR "/share/lives/plugins/"
597 #define PLUGIN_COMPOUND_DIR "/share/lives/plugins/"
598 #define DOC_DIR "/share/doc/lives-"
599 #define PLUGIN_EXEC_DIR "/lives/plugins/"
600 #define ICON_DIR "/share/lives/icons/"
601 #define DESKTOP_ICON_DIR "/share/icons/hicolor/256x256/apps"
604 #define LOCAL_HOME_DIR ".local"
605 #define LIVES_DEF_CONFIG_DATADIR DATA_DIR
607 #define LIVES_DEF_CONFIG_DIR ".config"
608 #define LIVES_DEF_CONFIG_FILE "settings"
610 #define LIVES_DEF_CONFIG_FILE_OLD ".lives"
611 #define LIVES_DEF_CONFIG_DATADIR_OLD ".lives-dir"
613 #define STOCK_ICONS_DIR "stock-icons"
615 #define LIVES_DEVICEMAP_DIR "devicemaps"
616 #define LIVES_DEF_WORK_NAME "livesprojects"
617 #define LIVES_RESOURCES_DIR "resources"
619 #define LAYOUTS_DIRNAME "layouts"
620 #define CLIPS_DIRNAME "clips"
621 #define IMPORTS_DIRNAME "imports"
623 #define SET_LOCK_FILE(set_name, lockfile) lives_build_filename(prefs->workdir, set_name, lockfile, NULL);
624 #define SET_LOCK_FILES(set_name) SET_LOCK_FILE(set_name, SET_LOCK_FILENAME);
627 #define MAKE_CLIPS_DIRNAME(set, handle) lives_build_filename(prefs->workdir, set, CLIPS_DIRNAME, handle, NULL);
630 #define CLIPDIR(handle) MAKE_CLIPS_DIRNAME(mainw->set_name, handle)
633 #define CLIPS_DIR(set) MAKE_CLIPS_DIRNAME(set, NULL)
636 #define LIVES_SUBS_FILTER {"*.srt", "*.sub", NULL}
637 #define LIVES_AUDIO_LOAD_FILTER {"*.it", "*.mp3", "*.wav", "*.ogg", "*.mod", "*.xm", "*.wma", "*.flac", NULL}
638 #define LIVES_TV_CARD_TYPES {"v4l2", "v4l", "bsdbt848", "dummy", "*autodetect", "yv12", "*", "rgb32", "rgb24", "rgb16", \
639 "rgb15", "uyvy", "yuy2", "i2420", NULL}
641 #define NUM_VOL_LIGHTS 10
645 #define START_PLAYBACK 0
646 #define STOP_PLAYBACK 1
647 #define CLIP_SELECT 2
648 #define PLAY_FORWARDS 3
649 #define PLAY_BACKWARDS 4
650 #define REVERSE_PLAYBACK 5
651 #define PLAY_FASTER 6
652 #define PLAY_SLOWER 7
653 #define TOGGLE_FREEZE 8
654 #define SET_FRAMERATE 9
655 #define START_RECORDING 10
656 #define STOP_RECORDING 11
657 #define TOGGLE_RECORDING 12
658 #define SWAP_FOREGROUND_BACKGROUND 13
659 #define RESET_EFFECT_KEYS 14
660 #define ENABLE_EFFECT_KEY 15
661 #define DISABLE_EFFECT_KEY 16
662 #define TOGGLE_EFFECT_KEY 17
663 #define SET_PARAMETER_VALUE 18
664 #define NEXT_CLIP_SELECT 19
665 #define PREV_CLIP_SELECT 20
666 #define SET_FPS_RATIO 21
667 #define RETRIGGER_CLIP 22
668 #define NEXT_MODE_CYCLE 23
669 #define PREV_MODE_CYCLE 24
670 #define SET_VPP_PARAMETER_VALUE 25
671 #define OSC_NOTIFY 26
681 #define N_HLP_PROCTHREADS 128
682 #define PT_LAZY_RFX 16
683 #define PT_LAZY_DSUSED 17
699 #define RFX_TOOL_MENU_POSN 2
702 #define MAINW_MSG_SIZE 8192
748 #define MAX_SET_NAME_LEN 128
832 #if GTK_CHECK_VERSION(3, 0, 0)
835 GdkNativeWindow foreign_id;
836 GdkColormap *foreign_cmap;
837 GdkPixmap *foreign_map;
888 #define SEL_MOVE_START 1
889 #define SEL_MOVE_END 2
890 #define SEL_MOVE_AUTO 3
891 #define SEL_MOVE_SINGLE 4
1027 #define SCRATCH_NONE 0
1028 #define SCRATCH_BACK -1
1029 #define SCRATCH_FWD 1
1030 #define SCRATCH_REV 2
1031 #define SCRATCH_JUMP 3
1032 #define SCRATCH_JUMP_NORESYNC 4
1034 #define SCRATCH_FWD_EXTRA 255
1035 #define SCRATCH_BACK_EXTRA 257
1049 double fx1_val, fx2_val, fx3_val, fx4_val, fx5_val,
fx6_val;
1053 boolean fx1_bool, fx2_bool, fx3_bool, fx4_bool, fx5_bool,
fx6_bool;
1131 #ifdef LIBAV_TRANSCODE
1132 LiVESWidget *transcode;
1316 #define PRV_DEFAULT PRV_PTR
1369 LiVESWidget *m_sepwinbutton, *m_playbutton, *
m_stopbutton, *m_playselbutton, *m_rewindbutton,
1379 LiVESWidget *p_playbutton, *p_playselbutton, *
p_rewindbutton, *p_loopbutton, *p_mutebutton;
1447 boolean jack_trans_poll;
1448 jack_driver_t *jackd;
1449 jack_driver_t *jackd_read;
1450 boolean jack_inited;
1458 #ifdef HAVE_PULSE_AUDIO
1459 pulse_driver_t *pulsed;
1460 pulse_driver_t *pulsed_read;
1582 snd_seq_t *seq_handle;
1584 int alsa_midi_dummy;
1597 #define SPLASH_LEVEL_BEGIN .0
1598 #define SPLASH_LEVEL_START_GUI .2
1599 #define SPLASH_LEVEL_LOAD_RTE .4
1600 #define SPLASH_LEVEL_LOAD_APLAYER .6
1601 #define SPLASH_LEVEL_LOAD_RFX .8
1602 #define SPLASH_LEVEL_COMPLETE 1.
1632 #define LIVES_NO_ALARM 0
1633 #define LIVES_MAX_ALARMS 1024
1634 #define LIVES_MAX_USER_ALARMS 512
1636 #define LIVES_URGENCY_ALARM LIVES_MAX_ALARMS // this is fine since we will subtract 1
1637 #define URGENCY_MSG_TIMEOUT 10. // seconds
1679 #define SCREEN_AREA_NONE -1
1680 #define SCREEN_AREA_FOREGROUND 0
1681 #define SCREEN_AREA_BACKGROUND 1
1682 #define SCREEN_AREA_USER_DEFINED1 2
1704 #define LIVES_SENSE_STATE_UNKNOWN 0
1705 #define LIVES_SENSE_STATE_INSENSITIZED (1 << 0)
1706 #define LIVES_SENSE_STATE_PROC_INSENSITIZED (1 << 1)
1707 #define LIVES_SENSE_STATE_SENSITIZED (1 << 16)
1708 #define LIVES_SENSE_STATE_INTERACTIVE (1 << 31)
1710 #define LIVES_IS_INTERACTIVE ((mainw->sense_state & LIVES_SENSE_STATE_INTERACTIVE) ? TRUE : FALSE)
1711 #define LIVES_IS_SENSITIZED ((mainw->sense_state & LIVES_SENSE_STATE_SENSITIZED) ? TRUE : FALSE)
1740 #define DEF_IDLE_MAX 1
1753 #define CHECK_CRIT (1 << 0)
1754 #define CHECK_WARN (1 << 1)
1755 #define CHECK_QUOTA (1 << 2)
1770 #define EFFORT_RANGE_MAX 64
1771 #define EFFORT_LIMIT_LOW (EFFORT_RANGE_MAX >> 3)
1772 #define EFFORT_LIMIT_MED (EFFORT_RANGE_MAX >> 2)
1780 #define MAX_CBSTORES 8
1805 #define MONITOR_QUOTA (1 << 0)
1854 #define LIVES_SIGKILL SIGKILL
1855 #define LIVES_SIGINT SIGINT
1856 #define LIVES_SIGPIPE SIGPIPE
1857 #define LIVES_SIGTRAP SIGTRAP
1858 #define LIVES_SIGUSR1 SIGUSR1
1859 #define LIVES_SIGABRT SIGABRT
1860 #define LIVES_SIGSEGV SIGSEGV
1861 #define LIVES_SIGHUP SIGHUP
1862 #define LIVES_SIGTERM SIGTERM
1863 #define LIVES_SIGQUIT SIGQUIT
1865 #define LIVES_SIGKILL SIGTERM
1866 #define LIVES_SIGINT SIGINT
1867 #define LIVES_SIGPIPE SIGPIPE
1868 #define LIVES_SIGTRAP SIGTRAP
1869 #define LIVES_SIGUSR1 SIGUSR1
1870 #define LIVES_SIGABRT SIGABRT
1871 #define LIVES_SIGSEGV SIGSEGV
1872 #define LIVES_SIGHUP SIGINT
1873 #define LIVES_SIGTERM SIGTERM
1874 #define LIVES_SIGQUIT SIGQUIT
1882 #ifdef HAVE_PULSE_AUDIO
1887 #endif // HAS_LIVES_MAINWINDOW_H
int framedraw_frame
current displayed frame
LiVESWidget * select_to_end
LiVESTextBuffer * layout_textbuffer
stores layout errors
void * jackd
jack audio player / transport
LiVESWidget * custom_effects_submenu
boolean internal_messaging
internal fx
lives_painter_surface_t * msg_surface
double blend_factor
keyboard control parameter
LiVESWidget * recent_menu
pthread_mutex_t instance_ref_mutex
refcounting for instances
weed_plant_t * rte_textparm
send keyboard input to this paramter (usually NULL)
LiVESWidget * drop_frame_button
LiVESWidget * stop_button
volatile ticks_t startticks
effective ticks when current frame was (should have been) displayed
char * recommended_string
localised text saying "recommended", for encoder and output format, etc.
boolean mt_needs_idlefunc
set if we need to re-add the idlefunc for autobackup
LiVESWidget * select_submenu
ticks_t last_display_ticks
LiVESWidget * fs_playalign
LiVESList * cliplist
hash table of clips in menu order
LiVESWidget * m_mutebutton
int swapped_clip
maintains the current cliplist postion even if we swap fg and bg clips
LiVESWidget * LiVES
WIDGETS.
LiVESIOChannel * iochan
encoder text output
double fixed_fpsd
<=0. means free playback
LiVESList * prefs_cache
file caches
LiVESWidgetColor normal_back
LiVESWidget * preferences
LiVESWidget * m_stopbutton
double period
timing variables
LiVESWidget * preview_controls
LiVESWidget * export_allaudio
LiVESWidget * rev_clipboard
LiVESWidgetColor light_red
boolean unordered_blocks
are we recording unordered blocks ?
LiVESWidget * promote_test_rfx
for future use
LiVESWidget * vj_save_set
#define N_HLP_PROCTHREADS
helper ptoc_threads
weed_plant_t * audio_event
LiVESWidget * rte_separator
boolean last_transition_ins_frames
lives_mgeometry_t * mgeom
multi-head support
_palette * palette
interface colour settings
char * any_string
localised text saying "Any", for encoder and output format
LiVESList * file_buffers
list of open files for buffered i/o
@ LIVES_DIALOG_CANCEL_RETRY_BROWSE
pthread_mutex_t abuf_mutex
mutices
LiVESList * xlays
immediately (to be) affected layout maps
LiVESWidget * msg_scrollbar
LiVESWidget * ins_frame_button
LiVESWidget * custom_effects_menu
size_t sl_undo_buffer_used
LiVESWidget * pl_eventbox
LiVESWidget * resample_audio
LiVESWidget * show_messages
weed_layer_t * st_fcache
caches for start / end / preview images. This avoids having to reload / reread them from the source,...
LiVESWidget * export_theme
LiVESWidget * select_last
volatile boolean is_exiting
set during shutdown (inverse of only_close then)
boolean no_interp
block interpolation (for single frame previews)
boolean ignore_screen_size
applied during frame reconfig events
LiVESWidget * splash_window
splash window
LiVESWidget * select_from_start
LiVESWidgetColor dark_red
_vid_playback_plugin * vpp
video plugin
int size_warn
warn the user that incorrectly sized frames were found (threshold count)
ticks_t last_startticks
effective ticks when lasty frame was (should have been) displayed
LiVESWidget * show_clipboard_info
LiVESWidget * cancelbutton
lives_colRGBA64_t mt_evbox
int new_clip
clip we should switch to during playback; switch will happen at the designated SWITCH POINT
boolean fatal
got fatal signal
LiVESWidgetColor normal_fore
boolean clip_switched
for recording - did we switch clips ?
LiVESWidget * paste_as_new
LiVESWidget * play_window
LiVESWidget * open_firewire
lives_ext_cntl_t
external control types
char * none_string
localised text saying "None", for playback plugin name, etc.
volatile boolean video_seek_ready
LiVESWidget * custom_effects_separator
boolean decoders_loaded
decoders
@ NUM_LIVES_STRING_CONSTANTS
boolean record_starting
start recording at next frame
lives_funcptr_t abort_hook_func
can be set to point to a function to be run before abort, for critical functions
@ LIVES_DIALOG_RETRY_CANCEL
char * recovery_file
the filename of our recover file
weed_plant_t * frame_layer
LiVESWidget * save_selection
int num_rendered_effects_builtin
weed_plant_t * blend_layer
LiVESWidget * import_proj
LiVESWidget * framecounter
@ LIVES_STRING_CONSTANT_CL
"the current layout"
ticks_t firstticks
ticks when audio started playing (for non-realtime audio plugins)
weed_plantptr_t lives_proc_thread_t
lives proc_threads API
mt_opts multi_opts
some multitrack options that survive between mt calls
volatile boolean transrend_ready
LiVESWidget * ins_silence
LiVESWidget * framedraw_cbutton
colour for mask
frames_t record_frame
frame number to insert in recording
pthread_mutex_t alarmlist_mutex
append / remove with file_buffer list
#define NUM_VOL_LIGHTS
unused
@ LIVES_STRING_CONSTANT_CLOSE_WINDOW
boolean noswitch
value set automatically to prevent 'inopportune' clip switching
ticks_t timeout_ticks
incremented if effect/rendering is paused/previewed
LiVESWidgetColor menu_and_bars_fore
ticks_t stream_ticks
ticks since first frame sent to playback plugin
lives_colRGBA64_t mt_timeline_reg
LiVESWidget * framedraw_maskbox
box for opacity controls
int osc_auto
bypass user choices automatically
frames_t actual_frame
actual / last frame being displayed
LiVESWidgetColor menu_and_bars
LiVESWidget * ext_audio_mon
boolean opening_multi
flag to indicate multiple file selection
_fx_dialog * fx_dialog[2]
LiVESWidget * preview_button
LiVESWidget * t_stopbutton
volatile boolean agen_needs_reinit
LiVESWidget * export_submenu
ticks_t cadjticks
used to equalise the timecode between alternate timer sources (clock -> source adjustment)
LiVESWidget * expl_missing
LiVESWidget * show_layout_errors
LiVESWidget * run_test_rfx_menu
ulong fsp_func
fileselector preview expose (for image thumbnails)
pthread_mutex_t cache_buffer_mutex
sync for jack playback termination
@ LIVES_DIALOG_SKIP_RETRY_BROWSE
@ LIVES_TIME_SOURCE_SYSTEM
boolean toy_go_wild
some silliness
LiVESWidgetColor light_green
LiVESWidget * export_proj
weed_event_t * event_list
current event_list, for recording
unsigned char * sl_undo_mem
weed_plant_t * ref_message
volatile int rec_aclip
recording values - to be inserted at the following video frame
LiVESWidget * preview_spinbutton
LiVESWidget * effects_menu
boolean last_transition_align_start
frames64_t * frame_index
maps frame slots to the presentation values (if >= 0, points to a 'virtual' frame in the source clip,...
boolean reverse_pb
used in osc.c
LiVESWidget * resize_menuitem
LiVESWidget * custom_utilities_submenu
lives_colRGBA64_t mt_mark
LiVESWidget * loop_ping_pong
lives_render_error_t render_error
LiVESWidget * toy_random_frames
int pheight
playback height
LiVESWidget * adj_audio_sync
LiVESWidget * select_start_only
LiVESWidget * fade_aud_in
LiVESWidget * export_custom_rfx
@ LIVES_TIME_SOURCE_EXTERNAL
LiVESList * set_list
number of sets in workdir (minus the current set), -1 if not checked
weed_plant_t * fd_layer_orig
original layer uneffected
volatile lives_whentostop_t whentostop
lives_painter_surface_t * si_surface
LiVESWidget * edit_test_rfx
LiVESWidget * recaudio_clip
ulong fd_spin_func
spinbutton for framedraw previews
LiVESWidget * rename_test_rfx
LiVESList * recovery_list
crash recovery system
lives_permmgr_t * permmgr
LiVESWidgetColor banner_fade_text
LiVESWidget * recent_submenu
volatile boolean loop_cont
volatile lives_cancel_t cancelled
lives_storage_status_t ds_status
LiVESWidgetColor info_text
LiVESWidget * export_selaudio
ticks_t offsetticks
offset for multitrack playback start
LiVESAdjustment * msg_adj
LiVESWidget * hbox3
hbox with start / end spins and selection label (C.E.)
weed_plant_t * afilter_map
LiVESWidget * append_audio
LiVESWidget * save_rte_defs
boolean no_context_update
may be set temporarily to block wodget context updates
lives_painter_surface_t * fsp_surface
LiVESWidget * recaudio_sel
ticks_t cevent_tc
timecode of currently processing event
weed_layer_t * transrend_layer
int rte_keys
which effect is bound to keyboard (m) modechange and ctrl-alt-up-arrow / ctrl-alt-down-arrow param ch...
lives_whentostop_t
which stream end should cause playback to finish ?
LiVESWidget * fs_playarea
for the fileselection preview
frames_t fps_mini_measure
show fps stats during playback
char * disabled_string
localised text saying "disabled !", for playback plugin name, etc.
boolean preview_rendering
boolean recoverable_layout
LiVESWidget * show_file_comments
boolean stored_layout_save_all_vals
boolean keep_pre
set if previewed frames should be retained as processed frames (for rendered effects / generators)
volatile double rec_aseek
LiVESWidget * fs_playframe
pthread_mutex_t avseek_mutex
int afbuffer_clients_read
LiVESTargetEntry * target_table
drag and drop target table
int pre_src_audio_file
audio file we were playing before any ext input started
LiVESWidget * preview_box
lives_alarm_t overlay_alarm
LiVESWidget * open_vcd_submenu
LiVESWidgetColor mt_timecode_bg
LiVESTextView * optextview
volatile ticks_t clock_ticks
unadjusted system time since pb start, measured concurrently with currticks
LiVESWidget * custom_tools_menu
LiVESPixbuf * scrap_pixbuf
cached image for speeding up rendering
ticks_t deltaticks
deltaticks for scratching
int pre_src_file
video file we were playing before any ext input started
boolean midi_channel_lock
int num_rendered_effects_custom
LiVESWidget * message_box
ticks_t origsecs
playback start seconds - subtracted from all other ticks to keep numbers smaller
boolean playing_sel
list of set names in current workdir, mau be NULL
LiVESWidget * spinbutton_start
lives_screen_area_t * screen_areas
LiVESWidget * recaudio_submenu
boolean cs_permitted
set to TRUE to allow overriding of noswitch in limited circumstances
volatile int blend_palette
here we can store the details of the blend file at the insertion point, if nothing changes we can tar...
LiVESWidget * trim_submenu
set in set_palette_colours()
LiVESWidget * textwidget_focus
LiVESWidget * open_vcd_menu
int scrap_file
we throw odd sized frames here when recording in real time; used if a source is a generator or stream
LiVESWidget * start_image
#define FN_KEYS
number of function keys
LiVESWidget * delsel_audio
LiVESList * stored_layout_undos
LiVESWidget * framedraw_opscale
opacity
volatile int abufs_to_fill
LiVESXWindow * foreign_window
LiVESWidget * t_fullscreen
char * cl_string
localised text saying "*The current layout*", for layout warnings
boolean memok
set to FALSE if a segfault is received, ie. we should assume all memory is corrupted and exit ASAP
int playing_file
which number file we are playing (or -1) [generally mainw->current_file]
LiVESWidget * p_rewindbutton
ticks_t flush_audio_tc
reserved space for mbar
boolean cs_is_permitted
set automatically when cs_permitted can update the clip
boolean add_trash_rb
these are freed when the clip is switched or closed, or when the source frame changes or is updated
@ LIVES_STRING_CONSTANT_ANY
lives_cancel_t
cancel reason
@ LIVES_DIALOG_ABORT_RETRY
volatile boolean audio_seek_ready
frames_t fps_measure
show fps stats after playback
int fd_max_frame
max effected / generated frame
void * pulsed
pulseaudio player
lives_painter_surface_t * fd_surface
double aframeno
and the audio 'frame' for when we are looping
frames_t rec_vid_frames
values to be written to the event list concurrent with next video ftame event
LiVESAccelGroup * accel_group
LiVESWidget * select_to_aend
pthread_mutex_t event_list_mutex
prevent simultaneous writing to event_list by audio and video threads
LiVESWidget * delall_audio
lives_colRGBA64_t vfade_out_col
LiVESWidget * select_end_only
lives_colRGBA64_t ce_unsel
boolean recording_recovered
LiVESWidget * custom_gens_submenu
weed_event_t * stored_event_list
stored mt -> clip editor
LiVESWidget * custom_utilities_separator
LiVESWidget * open_loc_menu
LiVESWidget * import_theme
ticks_t adjticks
used to equalise the timecode between alternate timer sources (souce -> clock adjustment)
volatile boolean threaded_dialog
not really threaded ! but threaded_dialog_spin() can be called to animate it
int play_sequence
currticks when last display was shown (used for fixed fps)
LiVESWidget * scrolledwindow
boolean gen_to_clipboard
rendered generators
ticks_t syncticks
adjustment to compensate for missed clock updates when switching time sources
boolean leave_files
TRUE to leave clip files on disk even when closing (default FALSE)
pthread_mutex_t fbuffer_mutex
LiVESWidget * framedraw_preview
the 'redraw' button
volatile boolean ext_audio
using external video playback plugin to stream audio
LiVESWidget * open_lives2lives
boolean osc_block
TODO - make this a mutex and more finely grained : things we need to block are (clip switches,...
LiVESWidget * preview_image
boolean debug
debug crashes and asserts
LiVESWidget * rte_defs_menu
LiVESWidget * custom_utilities_menu
ulong toy_func_random_frames
LiVESWidget * pause_button
pthread_mutex_t audio_filewriteend_mutex
sync for ending writing audio to file
weed_plant_t weed_layer_t
LiVESWidget * t_infobutton
boolean close_keep_frames
special value for when generating to clipboard
lives_proc_thread_t transrend_proc
LiVESWidget * merge_dialog
LiVESWidget * freventbox1
ulong config_func
(GUI) function pointers
LiVESWidget * show_file_info
int ascrap_file
scrap file for recording audio scraps
boolean stored_event_list_changed
pthread_mutex_t clip_list_mutex
prevent adding/removing to cliplist while another thread could be reading it
LiVESWidget * freventbox0
volatile int uflow_count
experimental values, primarily for testing
int img_concat_clip
when opening multiple, image files can get concatenated here (prefs->concat_images)
LiVESWidgetColor fade_colour
LiVESWidget * utilities_submenu
LiVESWidget * select_invert
frames_t opening_frames
count of frames so far opened, updated after preview (currently)
int write_abuf
audio buffer number to write to (for multitrack)
boolean block_param_updates
block visual param changes from updating real values
boolean ignore_clipswitch
LiVESWidget * show_devopts
LiVESWidget * framedraw
for the framedraw special widget - TODO - use a sub-struct
boolean has_custom_utilities
@ LIVES_STRING_CONSTANT_RECOMMENDED
LiVESWidget * open_device_menu
LiVESList * hdrs_cache
cache of a file header (e.g. header.lives)
int def_width
default sizes for when no file is loaded
boolean add_clear_ds_button
char * subt_save_file
name of file to save subtitles to
volatile boolean in_fs_preview
lives_mt * multitrack
holds a pointer to the entire multitrack environment; NULL in Clip Edit mode
LiVESWidget * send_lives2lives
LiVESWidget * custom_tools_separator
boolean has_session_workdir
boolean suppress_dprint
tidy up, e.g. by blocking "switched to file..." and "closed file..." messages
LiVESWidget * int_audio_checkbutton
int aud_rec_fd
fd of file we are recording audio to
lives_colRGBA64_t frame_surround
volatile boolean record_paused
pause during recording
uint32_t last_grabbable_effect
weed_plant_t weed_event_t
LiVESWidget * framedraw_spinbutton
the frame number button
int last_dprint_file
message output settings
pthread_mutex_t fxd_active_mutex
prevent simultaneous writing to active_dummy by audio and video threads
LiVESList * current_layouts_map
map of all layouts for set
LiVESWidget * vj_show_keys
int num_tr_applied
number of transitions active
LiVESWidget * vj_load_set
@ LIVES_STRING_CONSTANT_DISABLED
@ LIVES_STRING_CONSTANT_BUILTIN
#define MAX_FILES
max files is actually 1 more than this, since file 0 is the clipboard
@ LIVES_DIALOG_WARN_WITH_CANCEL
boolean only_close
only close clips - do not exit
LiVESWidget * resetbutton
lives_painter_surface_t * video_drawable
LiVESList * gen_cache
general cache of fi
LiVESWidget * trim_to_pstart
boolean no_exit
if TRUE, do not exit after saving set
LiVESWidgetColor dark_orange
LiVESWidget * progressbar
LiVESWidgetColor info_base
uint64_t next_ds_warn_level
current disk space warning level for the tempdir
boolean stored_event_list_auto_changed
char * file_open_params
extra parameters for opening special files
boolean ext_playback
using external video playback plugin
lives_pconnect_t * pconx
list of out -> in param connections
int pre_play_file
the current file before playback started
LiVESWidget * delete_custom_rfx
@ LIVES_STRING_CONSTANT_NONE
LiVESList * affected_layouts_map
map of layouts with errors
lives_cursor_t cursor_style
LiVESWidget * btoolbar
button toolbar - clip editor
lives_painter_surface_t * play_surface
volatile lives_audio_buf_t * audio_frame_buffer
used for buffering / feeding audio to video generators
LiVESWidget * spinbutton_loops
LiVESWidget * open_loc_submenu
LiVESWidget * loop_continue
weed_plant_t * frame_layer_preload
predictive caching apparatus
weed_plant_t * fd_layer
framedraw preview layer
LiVESWidget * framedraw_scale
the slider
lives_storage_status_t
disk/storage status values
LiVESXDevice * mouse_device
unused for gtk+ < 3.0.0
boolean suppress_layout_warnings
pthread_mutex_t exit_mutex
prevent multiple threads trying to run cleanup
LiVESWidget * troubleshoot
LiVESWidget * cancel_button
int num_rendered_effects_test
pthread_mutex_t abuf_frame_mutex
used to synch audio buffer for generators
LiVESWidget * resample_video
void *(* lives_funcptr_t)(void *)
double audio_stretch
for fixed fps modes, the value is used to speed up / slow down audio
volatile uint64_t rte
current max for VJ mode == 64 effects on fg clip
boolean show_procd
override showing of "processing..." dialog
volatile ticks_t lastcheck
LiVESWidget * spinbutton_pb_fps
LiVESWidget * lock_selwidth
uint64_t aud_data_written
LiVESWidget * ldg_menuitem
corresponds to one clip in the GUI
boolean is_processing
states
int last_transition_loops
LiVESWidget * normalize_audio
LiVESWidget * delaudio_submenu
LiVESWidget * open_device_submenu
pthread_t * libthread
current read count. When this reaches abuffer_clients, we swap the read / write buffers
LiVESWidget * load_cdtrack
volatile ticks_t currticks
wall clock time, updated whenever lives_get_*_ticks is called
LiVESWidget * custom_tools_submenu
weed_plant_t * filter_map
lives_time_source_t
timebase sources
LiVESWidget * volume_scale
lives_cancel_type_t cancel_type
LiVESWidget * custom_gens_menu
volatile boolean ping_pong
@ LIVES_STRING_CONSTANT_TEST
boolean nervous
some VJ effects / toys
boolean opening_loc
opening location (streaming)
uint64_t agen_samps_count
count of samples since init
LiVESWidget * framedraw_reset
the 'redraw' button
LiVESWidget * record_perf
LiVESWidget * utilities_menu
volatile int agen_key
which fx key is generating audio [1 based] (or 0 for none)
LiVESWidget * run_test_rfx_submenu
lives_cconnect_t * cconx
list of out -> in alpha channel connections
pthread_mutex_t vpp_stream_mutex
prevent from writing audio when stream is closing
int osc_enc_width
encode width, height and fps set externally
LiVESWidget * vol_toolitem
LiVESWidget * fd_frame
surrounding frame widget
LiVESWidget * open_hfirewire
@ LIVES_DIALOG_ABORT_CANCEL_RETRY
LiVESWidgetColor mt_timecode_fg
LiVESList * affected_layout_marks
list of pairs of marks in affected_layouts_map, text between them should be deleted when stored_layou...
LiVESWidget * full_screen
volatile lives_rfx_t * vrfx_update
single access for updating alarm list
int fixed_fps_numer
fixed fps playback; usually fixed_fpsd==0.
#define MAX_FX_CANDIDATE_TYPES
#define FX_KEYS_MAX
the rest of the keys are accessible through the multitrack renderer (must, be > FX_KEYS_MAX_VIRTUAL)
LiVESWidget * preview_hbox
boolean prefs_need_restart
@ LIVES_TIME_SOURCE_SOUNDCARD
LiVESWidget * change_speed
LiVESWidget * advanced_menu
lives_painter_surface_t * pwin_surface
ticks_t orignsecs
usecs at start of playback - ditto
LiVESWidget * delete_test_rfx
LiVESWidget * preview_scale
boolean last_transition_loop_to_fit
LiVESWidget * gens_submenu
lives_render_error_t
various return conditions from rendering (multitrack or after recording)
boolean reconfig
set to TRUE if a monitor / screen size change is detected
#define MAINW_MSG_SIZE
mainw->msg bytesize
boolean foreign
for external window capture
LiVESWidget * fade_aud_out
pthread_cond_t avseek_cond
boolean write_vpp_file
video playback plugin was updated; write settings to a file on exit
lives_rfx_t * rendered_fx
rendered fx
boolean msg_area_configed
@ LIVES_STRING_CONSTANT_CUSTOM
LiVESList * new_lmap_errors