LiVES 2.4.6

- Main Page
- Namespaces
- Data Structures
- Files

- File List
- Globals

All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros
liblives.hpp
Go to the documentation of this file.
1 // liblives.hpp
2 // LiVES (lives-exe)
3 // (c) G. Finch <salsaman@gmail.com> 2015
4 // Released under the GPL 3 or later
5 // see file ../COPYING for licensing details
6
11 #ifndef HAS_LIBLIVES_H
12 #define HAS_LIBLIVES_H
13
17 #define LIVES_VERSION_MAJOR 2
18
22 #define LIVES_VERSION_MINOR 4
23
27 #define LIVES_VERSION_MICRO 6
28
32 #define LIVES_CHECK_VERSION(major, minor, micro) (major > LIVES_VERSION_MAJOR || (major == LIVES_VERSION_MAJOR && (minor > LIVES_VERSION_MINOR || (minor == LIVES_VERSION_MINOR && micro >= LIVES_VERSION_MICRO))))
33
34
35 // defs shared with lbindings.c
36
40 typedef enum {
41 LIVES_FILE_CHOOSER_VIDEO_AUDIO,
42 LIVES_FILE_CHOOSER_AUDIO_ONLY,
43 // LIVES_FILE_CHOOSER_VIDEO_AUDIO_MULTI, ///< file chooser options for multiple video or audio files
44 //LIVES_FILE_CHOOSER_VIDEO_RANGE ///< file chooser options for video range (start time/number of frames)
45 } lives_filechooser_t;
46
50 typedef enum {
51 LIVES_INTERFACE_MODE_INVALID=-1,
52 LIVES_INTERFACE_MODE_CLIPEDIT,
53 LIVES_INTERFACE_MODE_MULTITRACK
54 } lives_interface_mode_t;
55
56
60 typedef enum {
61 LIVES_STATUS_INVALID=-1,
62 LIVES_STATUS_NOTREADY,
63 LIVES_STATUS_READY,
64 LIVES_STATUS_PLAYING,
65 LIVES_STATUS_PROCESSING,
66 LIVES_STATUS_PREVIEW
67 } lives_status_t;
68
69
73 typedef enum {
74 LIVES_LITTLEENDIAN,
75 LIVES_BIGENDIAN
76 } lives_endian_t;
77
78
82 typedef enum {
83 LIVES_CALLBACK_FRAME_SYNCH = 1,
84 LIVES_CALLBACK_PLAYBACK_STARTED = 2,
85 LIVES_CALLBACK_PLAYBACK_STOPPED = 3,
86 LIVES_CALLBACK_PLAYBACK_STOPPED_RD = 4,
89
90 LIVES_CALLBACK_RECORD_STARTED = 32,
91 LIVES_CALLBACK_RECORD_STOPPED = 33,
92
93 LIVES_CALLBACK_APP_QUIT = 64,
94
95 LIVES_CALLBACK_CLIP_OPENED = 128,
96 LIVES_CALLBACK_CLIP_CLOSED = 129,
97
98
99 LIVES_CALLBACK_CLIPSET_OPENED = 256,
100 LIVES_CALLBACK_CLIPSET_SAVED = 257,
101
102 LIVES_CALLBACK_MODE_CHANGED = 4096,
103
104 LIVES_CALLBACK_OBJECT_DESTROYED = 16384,
105
106 #ifndef DOXYGEN_SKIP
107 LIVES_CALLBACK_PRIVATE = 32768
108 #endif
109 } lives_callback_t;
110
111
112
116 typedef enum {
117 LIVES_CHAR_ENCODING_UTF8,
118 LIVES_CHAR_ENCODING_LOCAL8BIT,
119 LIVES_CHAR_ENCODING_FILESYSTEM,
120 //LIVES_CHAR_ENCODING_UTF16, ///< UTF-16 char encoding
121 } lives_char_encoding_t;
122
126 #define LIVES_CHAR_ENCODING_DEFAULT LIVES_CHAR_ENCODING_UTF8
127
131 typedef enum {
132 // positive values for custom responses
133 LIVES_DIALOG_RESPONSE_INVALID=-1,
134 LIVES_DIALOG_RESPONSE_NONE=0,
135 LIVES_DIALOG_RESPONSE_OK,
136 LIVES_DIALOG_RESPONSE_RETRY,
137 LIVES_DIALOG_RESPONSE_ABORT,
138 LIVES_DIALOG_RESPONSE_RESET,
139 LIVES_DIALOG_RESPONSE_SHOW_DETAILS,
140 LIVES_DIALOG_RESPONSE_CANCEL,
141 LIVES_DIALOG_RESPONSE_ACCEPT,
142 LIVES_DIALOG_RESPONSE_YES,
143 LIVES_DIALOG_RESPONSE_NO
144 } lives_dialog_response_t;
145
146
150 typedef enum {
151 LIVES_AUDIO_SOURCE_UNKNOWN,
152 LIVES_AUDIO_SOURCE_INTERNAL,
153 LIVES_AUDIO_SOURCE_EXTERNAL
154 } lives_audio_source_t;
155
156
160 typedef enum {
161 LIVES_AUDIO_PLAYER_UNKNOWN,
162 LIVES_AUDIO_PLAYER_PULSE,
163 LIVES_AUDIO_PLAYER_JACK,
164 LIVES_AUDIO_PLAYER_SOX,
165 LIVES_AUDIO_PLAYER_MPLAYER,
166 LIVES_AUDIO_PLAYER_MPLAYER2
167 } lives_audio_player_t;
168
169
170
174 typedef enum {
175 LIVES_INSERT_MODE_NORMAL
176 } lives_insert_mode_t;
177
178
179
183 typedef enum {
184 LIVES_GRAVITY_NORMAL,
185 LIVES_GRAVITY_LEFT,
186 LIVES_GRAVITY_RIGHT
187 } lives_gravity_t;
188
189
190
194 typedef enum {
195 LIVES_LOOP_MODE_NONE=0,
196 LIVES_LOOP_MODE_CONTINUOUS=1,
197 LIVES_LOOP_MODE_FIT_AUDIO=2
198 } lives_loop_mode_t;
199
200
202
203 #ifdef __cplusplus
204
205 #include <vector>
206 #include <list>
207 #include <map>
208
209 #include <inttypes.h>
210
211 #include <string>
212
216 typedef unsigned long ulong;
217
218
219 #ifndef DOXYGEN_SKIP
220 extern "C" {
221 void binding_cb (lives_callback_t cb_type, const char *msgstring, uint64_t id);
222 }
223 #endif
224
225 using namespace std;
226
228
229
230
231
232
236 namespace lives {
237
239
243 typedef class livesApp livesApp;
244
248 typedef class set set;
249
253 typedef class clip clip;
254
258 typedef class effectKey effectKey;
259
263 typedef class effectKeyMap effectKeyMap;
264
268 typedef class effect effect;
269
270
274 typedef class player player;
275
276
280 typedef class multitrack multitrack;
281
282
286 typedef class block block;
287
288
292 typedef class livesString livesString;
293
294
298 typedef list<livesString> livesStringList;
299
300
302
303
308 class livesString : public std::string {
309 public:
310 livesString(const string& str="", lives_char_encoding_t e=LIVES_CHAR_ENCODING_DEFAULT) : m_encoding(e), std::string(str) {}
311 livesString(const string& str, size_t pos, size_t len = npos, lives_char_encoding_t e=LIVES_CHAR_ENCODING_DEFAULT) : m_encoding(e),
312 std::string(str, pos, len) {}
313 livesString(const char* s, lives_char_encoding_t e=LIVES_CHAR_ENCODING_DEFAULT) : m_encoding(e), std::string(s) {}
314 livesString(const char* s, size_t n, lives_char_encoding_t e=LIVES_CHAR_ENCODING_DEFAULT) : m_encoding(e), std::string(s, n) {}
315 livesString(size_t n, char c, lives_char_encoding_t e=LIVES_CHAR_ENCODING_DEFAULT) : m_encoding(e), std::string(n, c) {}
316 template <class InputIterator>
317 livesString (InputIterator first, InputIterator last,
318 lives_char_encoding_t e=LIVES_CHAR_ENCODING_DEFAULT) : m_encoding(e), std::string(first, last) {}
319
325 livesString toEncoding(lives_char_encoding_t enc);
326
331 void setEncoding(lives_char_encoding_t enc);
332
337 lives_char_encoding_t encoding();
338
339 private:
340 lives_char_encoding_t m_encoding;
341 };
342
343 #ifndef DOXYGEN_SKIP
344 typedef void *(*callback_f)(void *);
345
346 typedef struct {
347 ulong id;
348 livesApp *object;
349 lives_callback_t cb_type;
350 callback_f func;
351 void *data;
352 } closure;
353
354 typedef list<closure *> closureList;
355 typedef list<closure *>::iterator closureListIterator;
356 #endif
357
361 typedef struct {
362 lives_interface_mode_t mode;
363 } modeChangedInfo;
364
365
369 typedef struct {
370 int signum;
371 } appQuitInfo;
372
373
374 #ifndef DOXYGEN_SKIP
375 typedef struct {
376 ulong id;
377 char *response;
378 } _privateInfo;
379
380
381 typedef bool (*private_callback_f)(_privateInfo *, void *);
382 #endif
383
389 typedef bool (*modeChanged_callback_f)(livesApp *, modeChangedInfo *, void *);
390
396 typedef bool (*appQuit_callback_f)(livesApp *, appQuitInfo *, void *);
397
398
404 typedef bool (*objectDestroyed_callback_f)(livesApp *, void *);
405
406
407
413 class livesApp {
414 friend set;
415 friend clip;
416 friend effectKeyMap;
417 friend effectKey;
418 friend player;
419 friend multitrack;
420 friend block;
421
422 public:
426 livesApp();
427
434 livesApp(int argc, char *argv[]);
435
440 ~livesApp();
441
447 bool isValid() const;
448
453 bool isReady() const;
454
460 bool isPlaying() const;
461
465 const set& getSet();
466
470 const effectKeyMap& getEffectKeyMap();
471
475 const player& getPlayer();
476
480 const multitrack& getMultitrack();
481
487 bool removeCallback(ulong id) const;
488
498 ulong addCallback(lives_callback_t cb_type, modeChanged_callback_f func, void *data) const;
499
509 ulong addCallback(lives_callback_t cb_type, appQuit_callback_f func, void *data) const;
510
520 ulong addCallback(lives_callback_t cb_type, objectDestroyed_callback_f func, void *data) const;
521
529 lives_dialog_response_t showInfo(livesString text, bool blocking=true);
530
544 livesString chooseFileWithPreview(livesString dirname, lives_filechooser_t chooser_type, livesString title=livesString(""));
545
560 clip openFile(livesString fname, bool with_audio=true, double stime=0., int frames=0, bool deinterlace=false);
561
570 livesStringList availableSets();
571
582 livesString chooseSet();
583
594 bool reloadSet(livesString setname);
595
603 bool setInteractive(bool setting);
604
610 bool interactive();
611
618 bool deinterlaceOption();
619
626 lives_interface_mode_t mode();
627
636 lives_interface_mode_t setMode(lives_interface_mode_t mode);//, livesMultitrackSettings settings=NULL);
637
644 lives_status_t status() const;
645
650 bool cancel();
651
652
653
654 #ifndef DOXYGEN_SKIP
655 // For internal use only.
656 closureList& closures();
657 void invalidate();
658 void setClosures(closureList cl);
659
660 bool setPref(int prefidx, bool val) const;
661 bool setPref(int prefidx, int val) const;
662 bool setPref(int prefidx, int bitfield, bool val) const;
663
664 #endif
665
666 protected:
667 ulong addCallback(lives_callback_t cb_type, private_callback_f func, void *data) const;
668
669 private:
670 ulong m_id;
671 closureList m_closures;
672 set * m_set;
673 player *m_player;
674 effectKeyMap * m_effectKeyMap;
675 multitrack *m_multitrack;
676
677 pthread_t *m_thread;
678
679 bool m_deinterlace;
680
681 ulong appendClosure(lives_callback_t cb_type, callback_f func, void *data) const;
682 void init(int argc, char *argv[]);
683
684 void operator=(livesApp const&); // Don't implement
685 livesApp(const livesApp &other); // Don't implement
686
687 };
688
689
690
691
700 class clip {
701 friend livesApp;
702 friend set;
703 friend block;
704 friend multitrack;
705 friend player;
706
707 public:
708
712 clip();
713
720 bool isValid() const;
721
728 int frames();
729
736 int width();
737
744 int height();
745
752 double FPS();
753
763 double playbackFPS();
764
770 livesString name();
771
780 int audioRate();
781
791 int playbackAudioRate();
792
799 int audioChannels();
800
807 int audioSampleSize();
808
814 bool audioSigned();
815
821 lives_endian_t audioEndian();
822
823
829 double audioLength();
830
837 int selectionStart();
838
845 int selectionEnd();
846
847
853 bool selectAll();
854
862 bool setSelectionStart(unsigned int start);
863
871 bool setSelectionEnd(unsigned int end);
872
881 bool switchTo();
882
890 bool setIsBackground();
891
895 inline bool operator==(const clip& other) {
896 return other.m_uid == m_uid && m_lives == other.m_lives;
897 }
898
899 protected:
900 clip(ulong uid, livesApp *lives=NULL);
901 ulong m_uid;
902
903 private:
904 livesApp *m_lives;
905
906 };
907
908
909
910 #ifndef DOXYGEN_SKIP
911 typedef vector<ulong> clipList;
912 typedef vector<ulong>::iterator clipListIterator;
913 #endif
914
916
917
923 class set {
924 friend livesApp;
925
926 public:
927
933 bool isValid() const;
934
940 livesString name() const;
941
952 bool setName(livesString name=livesString()) const;
953
965 bool save(livesString name, bool force_append=false) const;
966
972 bool save() const;
973
980 unsigned int numClips() const;
981
988 clip nthClip(unsigned int n) const;
989
997 int indexOf(clip c) const;
998
1004 livesStringList layoutNames(unsigned int n) const;
1005
1009 inline bool operator==(const set& other) const {
1010 return other.m_lives == m_lives;
1011 }
1012
1013
1014 protected:
1015 set(livesApp *lives=NULL);
1016
1017 private:
1018 livesApp *m_lives;
1019 clipList m_clips;
1020
1021 void update_clip_list(void);
1022
1023
1024 };
1025
1026
1027
1028
1029
1035 class player {
1036 friend livesApp;
1037
1038 public:
1039
1045 bool isValid() const;
1046
1050 bool isPlaying() const;
1051
1052
1056 bool isRecording() const;
1057
1066 void setSepWin(bool setting) const;
1067
1072 bool sepWin() const;
1073
1080 void setFullScreen(bool setting) const;
1081
1086 bool fullScreen() const;
1087
1096 void setFS(bool setting) const;
1097
1103 bool play() const;
1104
1110 bool stop() const;
1111
1121 bool setForegroundClip(clip c) const;
1122
1130 clip foregroundClip() const;
1131
1141 bool setBackgroundClip(clip c) const;
1142
1150 clip backgroundClip() const;
1151
1166 double setPlaybackStartTime(double time) const;
1167
1180 int setVideoPlaybackFrame(int frame, bool background=false) const;
1181
1197 double videoPlaybackTime(bool background=false) const;
1198
1210 double setAudioPlaybackTime(double time) const;
1211
1225 double audioPlaybackTime() const;
1226
1235 double elapsedTime() const;
1236
1248 double setCurrentFPS(double fps) const;
1249
1258 double currentFPS() const;
1259
1268 int currentAudioRate() const;
1269
1278 lives_loop_mode_t setLoopMode(lives_loop_mode_t mode) const;
1279
1286 lives_loop_mode_t loopMode() const;
1287
1297 bool setPingPong(bool setting) const;
1298
1308 bool pingPong() const;
1309
1317 bool resyncFPS() const;
1318
1319
1323 inline bool operator==(const player& other) const {
1324 return other.m_lives == m_lives;
1325 }
1326
1327
1328 protected:
1329 player(livesApp *lives=NULL);
1330
1331 private:
1332 livesApp *m_lives;
1333
1334 };
1335
1337
1344 class effectKey {
1345 friend effectKeyMap;
1346 public:
1350 effectKey();
1351
1358 bool isValid() const;
1359
1368 int key();
1369
1376 int numModes();
1377
1384 int numMappedModes();
1385
1395 int setCurrentMode(int mode);
1396
1403 int currentMode();
1404
1413 bool setEnabled(bool setting);
1414
1421 bool enabled();
1422
1431 int appendMapping(effect e);
1432
1444 bool removeMapping(int mode);
1445
1452 effect at(int mode);
1453
1457 inline bool operator==(const effectKey& other) {
1458 return other.m_key == m_key && m_lives == other.m_lives;
1459 }
1460
1461 protected:
1462 effectKey(livesApp *lives, int key);
1463
1464 private:
1465 int m_key;
1466 livesApp *m_lives;
1467
1468 };
1469
1470
1471
1478 class effectKeyMap {
1479 friend livesApp;
1480 public:
1487 bool isValid() const;
1488
1494 bool clear() const;
1495
1504 effectKey at(int i) const;
1505
1513 size_t size() const;
1514
1518 inline bool operator==(const effectKeyMap& other) const {
1519 return other.m_lives == m_lives;
1520 }
1521
1528 inline effectKey operator [] (int i) const {
1529 return effectKey(m_lives, i);
1530 }
1531
1532
1533 protected:
1534 effectKeyMap(livesApp *lives);
1535
1536 private:
1537 livesApp *m_lives;
1538 };
1539
1540
1541
1546 class effect {
1547 friend effectKey;
1548 friend multitrack;
1549 public:
1564 effect(const livesApp &lives, livesString hashname, bool match_full=false);
1565
1581 effect(const livesApp &lives, livesString package, livesString fxname, livesString author=livesString(), int version=0);
1582
1589 bool isValid() const;
1590
1594 inline bool operator==(const effect& other) {
1595 return other.m_idx == m_idx && m_lives == other.m_lives;
1596 }
1597
1598 protected:
1599 effect();
1600 effect(livesApp *m_lives, int idx);
1601 livesApp *m_lives;
1602 int m_idx;
1603
1604 private:
1605
1606 };
1607
1608
1609
1615 class block {
1616 friend multitrack;
1617
1618 public:
1619
1626 bool isValid() const;
1627
1635 block(multitrack m, int track, double time);
1636
1642 double startTime();
1643
1649 double length();
1650
1656 clip clipSource();
1657
1664 int track();
1665
1675 bool remove();
1676
1690 bool moveTo(int track, double time);
1691
1692
1693
1694 protected:
1698 block(multitrack *m=NULL, ulong uid=0l);
1699
1700
1701 private:
1702 ulong m_uid;
1703 livesApp *m_lives;
1704
1705 void invalidate();
1706 };
1707
1708
1709
1714 class multitrack {
1715 friend livesApp;
1716 friend block;
1717
1718 public:
1719
1725 bool isValid() const;
1726
1731 bool isActive() const;
1732
1740 bool setCurrentTrack(int track) const;
1741
1750 int currentTrack() const;
1751
1762 double setCurrentTime(double time) const;
1763
1774 double currentTime() const;
1775
1782 livesString trackLabel(int track) const;
1783
1793 bool setTrackLabel(int track, livesString label=livesString()) const;
1794
1802 lives_gravity_t gravity() const;
1803
1811 lives_gravity_t setGravity(lives_gravity_t mode) const;
1812
1820 lives_insert_mode_t insertMode() const;
1821
1829 lives_insert_mode_t setInsertMode(lives_insert_mode_t mode) const;
1830
1831
1837 int addVideoTrack(bool in_front) const;
1838
1839
1845 int numVideoTracks() const;
1846
1847
1852 int numAudioTracks() const;
1853
1854
1860 double FPS() const;
1861
1886 block insertBlock(clip c, bool ignore_selection_limits=false, bool without_audio=false) const;
1887
1897 livesString wipeLayout(bool force=false) const;
1898
1906 livesString chooseLayout() const;
1907
1914 livesStringList availableLayouts() const;
1915
1928 bool reloadLayout(livesString filename) const;
1929
1945 livesString saveLayout(livesString name) const;
1946
1961 livesString saveLayout() const;
1962
1973 clip render(bool render_audio=true, bool normalise_audio=true) const;
1974
1983 effect autoTransition() const;
1984
1992 bool disableAutoTransition() const;
1993
2004 bool setAutoTransition(effect autotrans) const;
2005
2009 inline bool operator==(const multitrack& other) const {
2010 return m_lives == other.m_lives;
2011 }
2012
2013
2014 protected:
2015 multitrack(livesApp *lives=NULL);
2016
2020 livesApp *m_lives;
2021
2022
2023 };
2024
2025
2026
2027
2028
2029
2035 namespace prefs {
2040 livesString currentVideoLoadDir(const livesApp &lives);
2041
2046 livesString currentAudioDir(const livesApp &lives);
2047
2062 livesString tmpDir(const livesApp &lives);
2063
2069 lives_audio_source_t audioSource(const livesApp &lives);
2070
2077 bool setAudioSource(const livesApp &lives, lives_audio_source_t asrc);
2078
2083 lives_audio_player_t audioPlayer(const livesApp &lives);
2084
2092 int audioPlayerRate(const livesApp &lives);
2093
2098 bool isRealtimeAudioPlayer(lives_audio_player_t ptype);
2099
2104 int rteKeysVirtual(const livesApp &lives);
2105
2110 double maxFPS(const livesApp &lives);
2111
2117 bool audioFollowsVideoChanges(const livesApp &lives);
2118
2124 bool audioFollowsFPSChanges(const livesApp &lives);
2125
2132 bool setAudioFollowsFPSChanges(const livesApp &lives, bool setting);
2133
2140 bool setAudioFollowsVideoChanges(const livesApp &lives, bool setting);
2141
2148 bool sepWinSticky(const livesApp &lives);
2149
2156 bool setSepWinSticky(const livesApp &lives, bool);
2157
2164 bool mtExitRender(const livesApp &lives);
2165
2173 bool setMtExitRender(const livesApp &lives, bool setting);
2174
2175
2176 }
2177
2178
2179 }
2180
2181 #endif // __cplusplus
2182
2183 #endif //HAS_LIBLIVES_H
lives::prefs::currentAudioDir
livesString currentAudioDir(const livesApp &lives)
Definition: liblives.cpp:2248
LIVES_INSERT_MODE_NORMAL
Definition: liblives.hpp:175
LIVES_STATUS_PROCESSING
application is processing, commands will be ignored
Definition: liblives.hpp:65
LIVES_DIALOG_RESPONSE_ABORT
Abort button clicked.
Definition: liblives.hpp:137
lives::prefs::tmpDir
livesString tmpDir(const livesApp &lives)
Definition: liblives.cpp:2253
lives_audio_source_t
lives_audio_source_t
Definition: liblives.hpp:150
LIVES_DIALOG_RESPONSE_RESET
Reset button clicked.
Definition: liblives.hpp:138
LIVES_CHAR_ENCODING_LOCAL8BIT
8 bit locale file encoding
Definition: liblives.hpp:118
lives::prefs::sepWinSticky
bool sepWinSticky(const livesApp &lives)
Definition: liblives.cpp:2329
LIVES_DIALOG_RESPONSE_NO
No button clicked.
Definition: liblives.hpp:143
LIVES_STATUS_PLAYING
application is playing, only player commands will be responded to
Definition: liblives.hpp:64
LIVES_CALLBACK_MODE_CHANGED
sent when interface mode changes
Definition: liblives.hpp:102
LIVES_CALLBACK_OBJECT_DESTROYED
sent when livesApp object is deleted
Definition: liblives.hpp:104
LIVES_INTERFACE_MODE_MULTITRACK
multitrack mode
Definition: liblives.hpp:53
lives::prefs::audioFollowsVideoChanges
bool audioFollowsVideoChanges(const livesApp &lives)
Definition: liblives.cpp:2309
LIVES_FILE_CHOOSER_VIDEO_AUDIO
file chooser options for single video or audio file
Definition: liblives.hpp:41
lives::prefs::setMtExitRender
bool setMtExitRender(const livesApp &lives, bool setting)
Definition: liblives.cpp:2344
lives_filechooser_t
lives_filechooser_t
Definition: liblives.hpp:40
LIVES_AUDIO_SOURCE_EXTERNAL
Audio source is external to LiVES.
Definition: liblives.hpp:153
lives::prefs::setSepWinSticky
bool setSepWinSticky(const livesApp &lives, bool setting)
Definition: liblives.cpp:2334
LIVES_CALLBACK_APP_QUIT
sent when app quits
Definition: liblives.hpp:93
LIVES_INTERFACE_MODE_CLIPEDIT
clip editor mode
Definition: liblives.hpp:52
LIVES_AUDIO_PLAYER_UNKNOWN
Unknown / invalid.
Definition: liblives.hpp:161
lives_endian_t
lives_endian_t
Definition: liblives.hpp:73
LIVES_AUDIO_PLAYER_PULSE
Audio playback is through PulseAudio.
Definition: liblives.hpp:162
lives_insert_mode_t
lives_insert_mode_t
Definition: liblives.hpp:174
lives::prefs::currentVideoLoadDir
livesString currentVideoLoadDir(const livesApp &lives)
Definition: liblives.cpp:2243
LIVES_STATUS_INVALID
livesApp instance is invalid
Definition: liblives.hpp:61
LIVES_LITTLEENDIAN
Definition: liblives.hpp:74
lives::prefs::maxFPS
double maxFPS(const livesApp &lives)
Definition: liblives.cpp:2304
lives::prefs::setAudioFollowsFPSChanges
bool setAudioFollowsFPSChanges(const livesApp &lives, bool setting)
Definition: liblives.cpp:2324
LIVES_CHAR_ENCODING_FILESYSTEM
file system encoding (UTF-8 on windows, local8bit on others)
Definition: liblives.hpp:119
lives::prefs::audioPlayerRate
int audioPlayerRate(const livesApp &lives)
Definition: liblives.cpp:2278
LIVES_AUDIO_SOURCE_INTERNAL
Audio source is internal to LiVES.
Definition: liblives.hpp:152
LIVES_CALLBACK_FRAME_SYNCH
sent when a frame is displayed
Definition: liblives.hpp:83
lives_loop_mode_t
lives_loop_mode_t
Definition: liblives.hpp:194
lives_audio_player_t
lives_audio_player_t
Definition: liblives.hpp:160
LIVES_AUDIO_PLAYER_MPLAYER2
Audio playback is through mplayer2.
Definition: liblives.hpp:166
LIVES_CALLBACK_CLIP_OPENED
sent after a clip is opened
Definition: liblives.hpp:95
LIVES_AUDIO_PLAYER_MPLAYER
Audio playback is through mplayer.
Definition: liblives.hpp:165
version
const char * version(void)
LIVES_DIALOG_RESPONSE_YES
Yes button clicked.
Definition: liblives.hpp:142
LIVES_STATUS_READY
application is ready for commands
Definition: liblives.hpp:63
LIVES_GRAVITY_LEFT
inserted blocks gravitate to the left
Definition: liblives.hpp:185
LIVES_CALLBACK_CLIPSET_OPENED
sent after a clip set is opened
Definition: liblives.hpp:99
LIVES_CHAR_ENCODING_UTF8
UTF-8 char encoding.
Definition: liblives.hpp:117
LIVES_CALLBACK_PLAYBACK_STOPPED_RD
Definition: liblives.hpp:88
lives_dialog_response_t
lives_dialog_response_t
Definition: liblives.hpp:131
LIVES_CHAR_ENCODING_DEFAULT
#define LIVES_CHAR_ENCODING_DEFAULT
Definition: liblives.hpp:126
LIVES_LOOP_MODE_NONE
no looping
Definition: liblives.hpp:195
LIVES_STATUS_PREVIEW
user is previewing an operation, commands will be ignored
Definition: liblives.hpp:66
LIVES_AUDIO_SOURCE_UNKNOWN
Unknown / invalid.
Definition: liblives.hpp:151
LIVES_DIALOG_RESPONSE_OK
OK button clicked.
Definition: liblives.hpp:135
LIVES_LOOP_MODE_CONTINUOUS
both video and audio loop continuously
Definition: liblives.hpp:196
prefs
_prefs * prefs
Definition: preferences.h:599
LIVES_DIALOG_RESPONSE_ACCEPT
Accept button clicked.
Definition: liblives.hpp:141
lives_callback_t
lives_callback_t
Definition: liblives.hpp:82
LIVES_CALLBACK_CLIP_CLOSED
sent after a clip is closed
Definition: liblives.hpp:96
LIVES_CALLBACK_CLIPSET_SAVED
sent after a clip set is closed
Definition: liblives.hpp:100
LIVES_BIGENDIAN
Definition: liblives.hpp:75
LIVES_FILE_CHOOSER_AUDIO_ONLY
file chooser options for single audio file
Definition: liblives.hpp:42
lives_char_encoding_t
lives_char_encoding_t
Definition: liblives.hpp:116
multitrack
lives_mt * multitrack(weed_plant_t *event_list, int orig_file, double fps)
create and return lives_mt struct
Definition: multitrack.c:5926
LIVES_INTERFACE_MODE_INVALID
livesApp instance is invalid
Definition: liblives.hpp:51
LIVES_LOOP_MODE_FIT_AUDIO
video keeps looping until audio playback finishes
Definition: liblives.hpp:197
lives::prefs::audioFollowsFPSChanges
bool audioFollowsFPSChanges(const livesApp &lives)
Definition: liblives.cpp:2314
ulong
#define ulong
Definition: main.h:148
LIVES_CALLBACK_RECORD_STARTED
sent when record starts (TODO)
Definition: liblives.hpp:90
lives::prefs::rteKeysVirtual
int rteKeysVirtual(const livesApp &lives)
Definition: liblives.cpp:2299
LIVES_CALLBACK_PLAYBACK_STARTED
sent when a/v playback starts or clip is switched
Definition: liblives.hpp:84
lives_interface_mode_t
lives_interface_mode_t
Definition: liblives.hpp:50
LIVES_DIALOG_RESPONSE_RETRY
Retry button clicked.
Definition: liblives.hpp:136
lives::prefs::mtExitRender
bool mtExitRender(const livesApp &lives)
Definition: liblives.cpp:2339
LIVES_CALLBACK_RECORD_STOPPED
sent when record stops (TODO)
Definition: liblives.hpp:91
lives_status_t
lives_status_t
Definition: liblives.hpp:60
LIVES_AUDIO_PLAYER_SOX
Audio playback is through Sox.
Definition: liblives.hpp:164
LIVES_CALLBACK_PRIVATE
for internal use
Definition: liblives.hpp:107
lives::prefs::audioSource
lives_audio_source_t audioSource(const livesApp &lives)
Definition: liblives.cpp:2258
LIVES_STATUS_NOTREADY
application is starting up; not ready
Definition: liblives.hpp:62
LIVES_CALLBACK_PLAYBACK_STOPPED
Definition: liblives.hpp:85
lives::prefs::setAudioSource
bool setAudioSource(const livesApp &lives, lives_audio_source_t asrc)
Definition: liblives.cpp:2264
LIVES_DIALOG_RESPONSE_CANCEL
Cancel button clicked.
Definition: liblives.hpp:140
binding_cb
void binding_cb(lives_callback_t cb_type, const char *msgstring, ulong id)
Definition: liblives.cpp:2362
LIVES_DIALOG_RESPONSE_NONE
Response not obtained.
Definition: liblives.hpp:134
LIVES_AUDIO_PLAYER_JACK
Audio playback is thorugh Jack.
Definition: liblives.hpp:163
LIVES_GRAVITY_RIGHT
inserted blocks gravitate to the right
Definition: liblives.hpp:186
lives::prefs::audioPlayer
lives_audio_player_t audioPlayer(const livesApp &lives)
Definition: liblives.cpp:2269
LIVES_DIALOG_RESPONSE_SHOW_DETAILS
Show details button clicked.
Definition: liblives.hpp:139
lives_gravity_t
lives_gravity_t
Definition: liblives.hpp:183
lives::prefs::isRealtimeAudioPlayer
bool isRealtimeAudioPlayer(lives_audio_player_t player_type)
Definition: liblives.cpp:2289
LIVES_GRAVITY_NORMAL
no gravity
Definition: liblives.hpp:184
LIVES_DIALOG_RESPONSE_INVALID
INVALID response.
Definition: liblives.hpp:133
lives::prefs::setAudioFollowsVideoChanges
bool setAudioFollowsVideoChanges(const livesApp &lives, bool setting)
Definition: liblives.cpp:2319