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)
42#define LIVES_SHORT_TIMEOUT (5. * TICKS_PER_SECOND_DBL)
43#define LIVES_DEFAULT_TIMEOUT (10. * TICKS_PER_SECOND_DBL)
44#define LIVES_LONGER_TIMEOUT (20. * TICKS_PER_SECOND_DBL)
45#define LIVES_LONGEST_TIMEOUT (30. * TICKS_PER_SECOND_DBL)
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)
167#define ENC_DETAILS_WIN_H ((int)(DEF_FRAME_HSIZE_43S_UNSCALED * widget_opts.scale))
169#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))
175#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
206#define FX_KEYS_MAX 65536
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"
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"
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
648#define PLAY_FORWARDS 3
649#define PLAY_BACKWARDS 4
650#define REVERSE_PLAYBACK 5
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
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
771 int audio_start, audio_end;
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
1637#define URGENCY_MSG_TIMEOUT 10.
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
weed_plant_t weed_layer_t
weed_plant_t weed_event_t
lives_render_error_t
various return conditions from rendering (multitrack or after recording)
weed_plantptr_t lives_proc_thread_t
lives proc_threads API
lives_storage_status_t
disk/storage status values
void *(* lives_funcptr_t)(void *)
lives_whentostop_t
which stream end should cause playback to finish ?
#define MAX_FILES
max files is actually 1 more than this, since file 0 is the clipboard
lives_cancel_t
cancel reason
#define N_HLP_PROCTHREADS
helper ptoc_threads
#define MAINW_MSG_SIZE
mainw->msg bytesize
lives_ext_cntl_t
external control types
_palette * palette
interface colour settings
@ LIVES_DIALOG_CANCEL_RETRY_BROWSE
@ LIVES_DIALOG_ABORT_RETRY
@ LIVES_DIALOG_WARN_WITH_CANCEL
@ LIVES_DIALOG_SKIP_RETRY_BROWSE
@ LIVES_DIALOG_ABORT_CANCEL_RETRY
@ LIVES_DIALOG_RETRY_CANCEL
#define NUM_VOL_LIGHTS
unused
@ NUM_LIVES_STRING_CONSTANTS
@ LIVES_STRING_CONSTANT_CUSTOM
@ LIVES_STRING_CONSTANT_CLOSE_WINDOW
@ LIVES_STRING_CONSTANT_BUILTIN
@ LIVES_STRING_CONSTANT_DISABLED
@ LIVES_STRING_CONSTANT_RECOMMENDED
@ LIVES_STRING_CONSTANT_TEST
@ LIVES_STRING_CONSTANT_NONE
@ LIVES_STRING_CONSTANT_CL
"the current layout"
@ LIVES_STRING_CONSTANT_ANY
_fx_dialog * fx_dialog[2]
lives_time_source_t
timebase sources
@ LIVES_TIME_SOURCE_SOUNDCARD
@ LIVES_TIME_SOURCE_SYSTEM
@ LIVES_TIME_SOURCE_EXTERNAL
#define FX_KEYS_MAX
the rest of the keys are accessible through the multitrack renderer (must, be > FX_KEYS_MAX_VIRTUAL)
#define FN_KEYS
number of function keys
#define MAX_FX_CANDIDATE_TYPES
LiVESWidget * resetbutton
LiVESWidget * cancelbutton
LiVESWidget * ins_frame_button
LiVESWidget * merge_dialog
LiVESWidget * spinbutton_loops
LiVESWidget * drop_frame_button
set in set_palette_colours()
LiVESWidgetColor mt_timecode_bg
LiVESWidgetColor dark_orange
LiVESWidgetColor normal_fore
LiVESWidgetColor info_base
LiVESWidgetColor banner_fade_text
lives_colRGBA64_t mt_evbox
lives_colRGBA64_t mt_timeline_reg
LiVESWidgetColor light_red
LiVESWidgetColor menu_and_bars
LiVESWidgetColor info_text
LiVESWidgetColor normal_back
lives_colRGBA64_t frame_surround
LiVESWidgetColor dark_red
lives_colRGBA64_t ce_unsel
LiVESWidgetColor light_green
lives_colRGBA64_t mt_mark
LiVESWidgetColor menu_and_bars_fore
LiVESWidgetColor fade_colour
LiVESWidgetColor mt_timecode_fg
corresponds to one clip in the GUI
LiVESXDevice * mouse_device
unused for gtk+ < 3.0.0
volatile ticks_t lastcheck
boolean ignore_clipswitch
LiVESList * prefs_cache
file caches
LiVESList * set_list
number of sets in workdir (minus the current set), -1 if not checked
LiVESList * xlays
immediately (to be) affected layout maps
LiVESWidget * paste_as_new
weed_plant_t * ref_message
LiVESWidget * freventbox1
LiVESWidget * vj_save_set
LiVESWidget * send_lives2lives
lives_cursor_t cursor_style
_vid_playback_plugin * vpp
video plugin
weed_plant_t * fd_layer
framedraw preview layer
LiVESWidget * loop_ping_pong
int swapped_clip
maintains the current cliplist postion even if we swap fg and bg clips
weed_plant_t * frame_layer
LiVESWidget * custom_gens_menu
int num_rendered_effects_builtin
boolean close_keep_frames
special value for when generating to clipboard
lives_painter_surface_t * fsp_surface
boolean msg_area_configed
boolean nervous
some VJ effects / toys
LiVESWidget * fade_aud_out
volatile lives_rfx_t * vrfx_update
single access for updating alarm list
boolean stored_event_list_auto_changed
volatile int agen_key
which fx key is generating audio [1 based] (or 0 for none)
boolean gen_to_clipboard
rendered generators
pthread_mutex_t abuf_frame_mutex
used to synch audio buffer for generators
ticks_t last_startticks
effective ticks when lasty frame was (should have been) displayed
boolean last_transition_ins_frames
volatile boolean video_seek_ready
LiVESWidget * advanced_menu
pthread_mutex_t instance_ref_mutex
refcounting for instances
int write_abuf
audio buffer number to write to (for multitrack)
int img_concat_clip
when opening multiple, image files can get concatenated here (prefs->concat_images)
frames_t rec_vid_frames
values to be written to the event list concurrent with next video ftame event
double aframeno
and the audio 'frame' for when we are looping
pthread_mutex_t audio_filewriteend_mutex
sync for ending writing audio to file
LiVESWidget * preferences
int osc_auto
bypass user choices automatically
LiVESTextBuffer * layout_textbuffer
stores layout errors
pthread_mutex_t alarmlist_mutex
append / remove with file_buffer list
LiVESWidget * open_device_submenu
size_t sl_undo_buffer_used
LiVESWidget * delaudio_submenu
LiVESWidget * recent_submenu
LiVESWidget * save_rte_defs
boolean no_exit
if TRUE, do not exit after saving set
boolean debug
debug crashes and asserts
boolean only_close
only close clips - do not exit
LiVESWidget * show_messages
volatile uint64_t rte
current max for VJ mode == 64 effects on fg clip
LiVESWidget * custom_tools_separator
LiVESWidget * p_loopbutton
LiVESWidget * export_theme
pthread_mutex_t event_list_mutex
prevent simultaneous writing to event_list by audio and video threads
LiVESWidget * preview_image
int aud_rec_fd
fd of file we are recording audio to
volatile ticks_t currticks
wall clock time, updated whenever lives_get_*_ticks is called
LiVESWidget * freventbox0
int last_dprint_file
message output settings
LiVESWidget * change_speed
boolean last_transition_loop_to_fit
LiVESWidget * open_loc_menu
boolean toy_go_wild
some silliness
LiVESTargetEntry * target_table
drag and drop target table
LiVESWidget * custom_effects_submenu
LiVESWidget * show_file_comments
LiVESWidget * t_stopbutton
double fixed_fpsd
<=0. means free playback
boolean prefs_need_restart
unsigned char * sl_undo_mem
void * pulsed
pulseaudio player
LiVESWidget * vol_toolitem
LiVESWidget * laudio_draw
LiVESWidget * custom_effects_separator
double blend_factor
keyboard control parameter
boolean add_clear_ds_button
LiVESWidget * preview_scale
weed_layer_t * transrend_layer
LiVESWidget * adj_audio_sync
pthread_mutex_t fbuffer_mutex
boolean block_param_updates
block visual param changes from updating real values
boolean suppress_layout_warnings
LiVESWidget * custom_utilities_menu
LiVESWidget * preview_hbox
ticks_t origsecs
playback start seconds - subtracted from all other ticks to keep numbers smaller
LiVESWidget * export_custom_rfx
char * recovery_file
the filename of our recover file
lives_painter_surface_t * ei_surface
boolean last_transition_align_start
LiVESWidget * troubleshoot
frames64_t * frame_index
maps frame slots to the presentation values (if >= 0, points to a 'virtual' frame in the source clip,...
LiVESWidget * custom_tools_submenu
lives_mgeometry_t * mgeom
multi-head support
LiVESAccelGroup * accel_group
boolean clip_switched
for recording - did we switch clips ?
boolean reconfig
set to TRUE if a monitor / screen size change is detected
frames_t opening_frames
count of frames so far opened, updated after preview (currently)
LiVESWidget * custom_effects_menu
volatile boolean loop_cont
LiVESIOChannel * iochan
encoder text output
LiVESWidget * resample_video
boolean cs_is_permitted
set automatically when cs_permitted can update the clip
boolean ignore_screen_size
applied during frame reconfig events
mt_opts multi_opts
some multitrack options that survive between mt calls
LiVESWidget * fs_playframe
LiVESWidget * record_perf
boolean no_interp
block interpolation (for single frame previews)
ulong fsp_func
fileselector preview expose (for image thumbnails)
LiVESWidget * select_to_end
volatile boolean ext_audio
using external video playback plugin to stream audio
LiVESWidget * fs_playalign
lives_permmgr_t * permmgr
LiVESWidget * vj_load_set
LiVESWidget * preview_controls
LiVESTextView * optextview
LiVESWidget * resize_menuitem
LiVESWidget * select_last
boolean noswitch
value set automatically to prevent 'inopportune' clip switching
lives_render_error_t render_error
boolean cs_permitted
set to TRUE to allow overriding of noswitch in limited circumstances
LiVESWidget * open_firewire
LiVESList * cliplist
hash table of clips in menu order
LiVESWidget * volume_scale
volatile boolean transrend_ready
lives_alarm_t overlay_alarm
volatile lives_cancel_t cancelled
LiVESWidget * preview_spinbutton
LiVESWidget * delall_audio
LiVESWidget * rte_defs_menu
lives_storage_status_t ds_status
boolean osc_block
TODO - make this a mutex and more finely grained : things we need to block are (clip switches,...
boolean no_context_update
may be set temporarily to block wodget context updates
int num_rendered_effects_test
LiVESWidget * effects_menu
boolean show_procd
override showing of "processing..." dialog
lives_screen_area_t * screen_areas
pthread_cond_t avseek_cond
lives_cancel_type_t cancel_type
LiVESWidget * message_box
char * recommended_string
localised text saying "recommended", for encoder and output format, etc.
LiVESWidget * t_fullscreen
pthread_mutex_t clip_list_mutex
prevent adding/removing to cliplist while another thread could be reading it
LiVESWidget * gens_submenu
ticks_t orignsecs
usecs at start of playback - ditto
LiVESWidget * play_window
int num_rendered_effects_custom
uint64_t next_ds_warn_level
current disk space warning level for the tempdir
LiVESWidget * open_lives2lives
lives_colRGBA64_t vfade_in_col
LiVESWidget * select_to_aend
void * jackd
jack audio player / transport
LiVESList * gen_cache
general cache of fi
boolean stored_layout_save_all_vals
LiVESList * file_buffers
list of open files for buffered i/o
int last_transition_loops
LiVESWidget * recaudio_sel
int scrap_file
we throw odd sized frames here when recording in real time; used if a source is a generator or stream
LiVESList * affected_layout_marks
list of pairs of marks in affected_layouts_map, text between them should be deleted when stored_layou...
LiVESWidget * framedraw_preview
the 'redraw' button
LiVESAdjustment * msg_adj
uint64_t agen_samps_count
count of samples since init
int num_tr_applied
number of transitions active
LiVESWidget * spinbutton_pb_fps
lives_painter_surface_t * fd_surface
LiVESWidget * export_proj
LiVESWidget * rte_separator
LiVESWidget * resample_audio
LiVESWidget * spinbutton_end
LiVESWidget * framedraw_cbutton
colour for mask
double period
timing variables
LiVESWidget * fs_playarea
for the fileselection preview
uint64_t aud_data_written
volatile int blend_palette
here we can store the details of the blend file at the insertion point, if nothing changes we can tar...
LiVESList * recovery_list
crash recovery system
volatile boolean is_exiting
set during shutdown (inverse of only_close then)
LiVESList * new_lmap_errors
boolean decoders_loaded
decoders
frames_t fps_mini_measure
show fps stats during playback
weed_plant_t * filter_map
LiVESWidget * recent_menu
boolean has_custom_effects
weed_plant_t * blend_layer
LiVESWidget * full_screen
ticks_t last_display_ticks
LiVESWidget * show_devopts
LiVESWidget * select_from_start
boolean recoverable_layout
LiVESWidget * delete_custom_rfx
LiVESWidget * import_theme
pthread_mutex_t vpp_stream_mutex
prevent from writing audio when stream is closing
LiVESWidget * select_invert
int pre_src_file
video file we were playing before any ext input started
int blend_file
background clip details
ticks_t offsetticks
offset for multitrack playback start
LiVESWidget * custom_utilities_separator
LiVESWidget * open_vcd_submenu
LiVESWidget * append_audio
int play_sequence
currticks when last display was shown (used for fixed fps)
LiVESWidget * export_allaudio
boolean opening_multi
flag to indicate multiple file selection
lives_painter_surface_t * pwin_surface
LiVESWidget * select_end_only
LiVESWidget * LiVES
WIDGETS.
int pre_src_audio_file
audio file we were playing before any ext input started
LiVESWidget * framedraw_spinbutton
the frame number button
LiVESWidget * textwidget_focus
ticks_t firstticks
ticks when audio started playing (for non-realtime audio plugins)
LiVESWidget * framedraw_reset
the 'redraw' button
LiVESWidget * fd_frame
surrounding frame widget
LiVESWidget * open_hfirewire
LiVESWidget * btoolbar
button toolbar - clip editor
boolean ext_playback
using external video playback plugin
LiVESWidget * ext_audio_checkbutton
boolean suppress_dprint
tidy up, e.g. by blocking "switched to file..." and "closed file..." messages
int pheight
playback height
LiVESWidget * vj_show_keys
LiVESWidget * lock_selwidth
weed_plant_t * audio_event
LiVESWidget * custom_utilities_submenu
pthread_mutex_t abuf_mutex
mutices
boolean opening_loc
opening location (streaming)
LiVESWidget * utilities_submenu
LiVESWidget * hbox3
hbox with start / end spins and selection label (C.E.)
LiVESWidget * show_clipboard_info
volatile int rec_aclip
recording values - to be inserted at the following video frame
LiVESWidget * framedraw_scale
the slider
LiVESWidget * m_loopbutton
LiVESWidget * show_layout_errors
volatile double rec_aseek
ulong toy_func_random_frames
lives_funcptr_t abort_hook_func
can be set to point to a function to be run before abort, for critical functions
boolean leave_files
TRUE to leave clip files on disk even when closing (default FALSE)
weed_event_t * stored_event_list
stored mt -> clip editor
boolean unordered_blocks
are we recording unordered blocks ?
LiVESWidget * preview_box
LiVESWidget * import_proj
LiVESWidget * framedraw
for the framedraw special widget - TODO - use a sub-struct
boolean playing_sel
list of set names in current workdir, mau be NULL
LiVESWidget * ext_audio_mon
LiVESWidget * recaudio_submenu
volatile ticks_t clock_ticks
unadjusted system time since pb start, measured concurrently with currticks
LiVESList * current_layouts_map
map of all layouts for set
boolean has_session_workdir
boolean recording_recovered
volatile boolean in_fs_preview
pthread_mutex_t fxd_active_mutex
prevent simultaneous writing to active_dummy by audio and video threads
int framedraw_frame
current displayed frame
volatile boolean record_paused
pause during recording
int ascrap_file
scrap file for recording audio scraps
boolean keep_pre
set if previewed frames should be retained as processed frames (for rendered effects / generators)
char * file_open_params
extra parameters for opening special files
double audio_stretch
for fixed fps modes, the value is used to speed up / slow down audio
lives_mt * multitrack
holds a pointer to the entire multitrack environment; NULL in Clip Edit mode
pthread_mutex_t avseek_mutex
volatile boolean ping_pong
char * none_string
localised text saying "None", for playback plugin name, etc.
LiVESWidget * promote_test_rfx
for future use
boolean record_starting
start recording at next frame
LiVESWidget * save_selection
LiVESList * stored_layout_undos
lives_proc_thread_t transrend_proc
boolean foreign
for external window capture
volatile boolean agen_needs_reinit
LiVESWidget * edit_test_rfx
boolean memok
set to FALSE if a segfault is received, ie. we should assume all memory is corrupted and exit ASAP
pthread_mutex_t cache_buffer_mutex
sync for jack playback termination
boolean stored_event_list_changed
lives_painter_surface_t * laudio_drawable
LiVESWidget * trim_submenu
LiVESWidget * show_file_info
LiVESWidget * custom_tools_menu
weed_plant_t * fd_layer_orig
original layer uneffected
LiVESWidget * splash_label
boolean reverse_pb
used in osc.c
LiVESWidget * load_cdtrack
LiVESWidget * normalize_audio
boolean fatal
got fatal signal
boolean internal_messaging
internal fx
boolean is_processing
states
ticks_t cadjticks
used to equalise the timecode between alternate timer sources (clock -> source adjustment)
boolean preview_rendering
lives_cconnect_t * cconx
list of out -> in alpha channel connections
LiVESWidget * ldg_menuitem
int rte_keys
which effect is bound to keyboard (m) modechange and ctrl-alt-up-arrow / ctrl-alt-down-arrow param ch...
char * cl_string
localised text saying "*The current layout*", for layout warnings
lives_painter_surface_t * play_surface
boolean write_vpp_file
video playback plugin was updated; write settings to a file on exit
LiVESWidget * rev_clipboard
volatile int abufs_to_fill
char * subt_save_file
name of file to save subtitles to
char * disabled_string
localised text saying "disabled !", for playback plugin name, etc.
lives_painter_surface_t * msg_surface
LiVESWidget * t_infobutton
LiVESWidget * open_vcd_menu
int afbuffer_clients_read
ticks_t syncticks
adjustment to compensate for missed clock updates when switching time sources
pthread_t * libthread
current read count. When this reaches abuffer_clients, we swap the read / write buffers
LiVESWidget * fade_aud_in
LiVESWidget * m_playbutton
ticks_t timeout_ticks
incremented if effect/rendering is paused/previewed
ticks_t deltaticks
deltaticks for scratching
LiVESWidget * framedraw_maskbox
box for opacity controls
uint32_t last_grabbable_effect
volatile ticks_t startticks
effective ticks when current frame was (should have been) displayed
weed_plant_t * afilter_map
LiVESWidget * toy_random_frames
volatile boolean audio_seek_ready
LiVESWidget * pl_eventbox
int new_clip
clip we should switch to during playback; switch will happen at the designated SWITCH POINT
LiVESWidget * export_submenu
weed_plant_t * rte_textparm
send keyboard input to this paramter (usually NULL)
ticks_t adjticks
used to equalise the timecode between alternate timer sources (souce -> clock adjustment)
frames_t record_frame
frame number to insert in recording
LiVESWidget * expl_missing
LiVESList * affected_layouts_map
map of layouts with errors
boolean midi_channel_lock
boolean mt_needs_idlefunc
set if we need to re-add the idlefunc for autobackup
LiVESWidget * select_submenu
lives_pconnect_t * pconx
list of out -> in param connections
ulong fd_spin_func
spinbutton for framedraw previews
frames_t fps_measure
show fps stats after playback
LiVESWidget * delsel_audio
frames_t actual_frame
actual / last frame being displayed
volatile lives_whentostop_t whentostop
LiVESWidget * run_test_rfx_menu
int playing_file
which number file we are playing (or -1) [generally mainw->current_file]
LiVESWidget * select_start_only
char * any_string
localised text saying "Any", for encoder and output format
LiVESWidget * trim_to_pstart
weed_plant_t * frame_layer_preload
predictive caching apparatus
LiVESWidget * open_loc_submenu
ulong config_func
(GUI) function pointers
volatile lives_audio_buf_t * audio_frame_buffer
used for buffering / feeding audio to video generators
volatile int uflow_count
experimental values, primarily for testing
lives_rfx_t * rendered_fx
rendered fx
LiVESWidget * framecounter
ticks_t flush_audio_tc
reserved space for mbar
int pre_play_file
the current file before playback started
LiVESWidget * export_selaudio
volatile boolean threaded_dialog
not really threaded ! but threaded_dialog_spin() can be called to animate it
LiVESXWindow * foreign_window
int size_warn
warn the user that incorrectly sized frames were found (threshold count)
int fd_max_frame
max effected / generated frame
LiVESWidget * recaudio_clip
LiVESWidget * utilities_menu
LiVESWidget * msg_scrollbar
LiVESPixbuf * scrap_pixbuf
cached image for speeding up rendering
LiVESWidget * rename_test_rfx
LiVESWidget * open_device_menu
pthread_mutex_t exit_mutex
prevent multiple threads trying to run cleanup
LiVESWidget * delete_test_rfx
weed_event_t * event_list
current event_list, for recording
LiVESList * hdrs_cache
cache of a file header (e.g. header.lives)
LiVESWidget * run_test_rfx_submenu
LiVESWidget * framedraw_opscale
opacity
LiVESWidget * ins_silence
boolean add_trash_rb
these are freed when the clip is switched or closed, or when the source frame changes or is updated
LiVESWidget * loop_continue
ticks_t cevent_tc
timecode of currently processing event
LiVESWidget * custom_gens_submenu
ticks_t stream_ticks
ticks since first frame sent to playback plugin
LiVESWidget * progressbar
LiVESWidget * stop_button
LiVESWidget * cancel_button
LiVESWidget * pause_button
LiVESWidget * preview_button
LiVESWidget * scrolledwindow