Commit Graph
122 Commits
Author SHA1 Message Date
itsmattkc 06ab2d3a0b fixed namespace issue that broke loading projects from file 2020-04-28 04:00:27 +10:00
itsmattkc 0faf682225 core: fixed bug that didn't register ProjectPtr correctly and broke some
functionality as a result
2020-04-28 02:47:28 +10:00
itsmattkc 5c736114d0 merged some export improvements from another branch 2020-04-23 01:31:50 +10:00
itsmattkc ccb02d30aa colormanager: implement default config 2020-04-22 05:08:33 +10:00
itsmattkc 71ea92e86d core: set unsaved confirmation dialog to "WindowModal"
Makes messagebox appear as a sheet on macOS.
2020-04-21 19:54:55 +10:00
itsmattkc 1c3c8cd9b2 began work on headless export path 2020-04-20 02:37:10 +10:00
itsmattkc 63c194896d core: implemented yes/no to all when closing multiple modified projects 2020-04-19 03:29:39 +10:00
itsmattkc 93e5e7c0c1 core/mainmenu: implemented save/close all/current actions for multiple projects
Expands on UI from multiple project support implemented earlier.
2020-04-19 00:37:44 +10:00
itsmattkc f73c41d3fa various: implemented multiple project support
This required various changes to various parts of the infrastructure (mostly
using paths to finding the "root project" of any given object throughout).
Now theoretically infinite projects can be opened and accounted for at any
given time.
2020-04-18 01:50:47 +10:00
itsmattkc 6df708028f core: reimplemented "open recent" functionality and opening a project from command line 2020-04-17 02:57:56 +10:00
itsmattkc 2f80be437a node: fixed issue with "taking" values from input tables
As opposed to simply leaving all values in the table, nodes can now "take"
values that they use to free up memory (e.g. "taking" input buffers if they're
used to produce an output buffer).

This is a fairly large change, expect regressions.
2020-04-16 23:12:05 +10:00
itsmattkc 4cb02b6769 core: set config defaults a second time before loading
Works around an issue where media cache directories would be set before the
app name is set (which Qt uses to return the local appdata dirs used to
set the cache directories).
2020-04-08 02:03:46 +10:00
itsmattkc 1aa87cbda6 various: encapsulate all code in the olive namespace to avoid name collisions
Large-scale code cleanup. Also adds a license to the top of all files that were
missing it.
2020-04-06 15:29:53 +10:00
itsmattkc edc38ad8a2 timeline: implemented adding objects in the timeline (e.g. solid, title) 2020-04-06 00:05:09 +10:00
itsmattkc ae6c7174c3 core: declare Color as a Qt metatype 2020-04-04 04:21:28 +11:00
itsmattkc 6f0d72c05d renderer: switched audio rendering over to planar buffers
While planar audio cannot be used for playback, it's much easier for processing.
This should lead to cleaner and easier to write code in the future.
2020-03-31 18:01:20 +11:00
itsmattkc 2bda306866 timeline/various: implemented block copy/paste
Implemented the ability to copy/paste blocks/clips in the timeline. This did
require some large scale changes and reworking of the copy/paste system
introduced a few commits ago, but should be largely functional now.
2020-03-31 02:19:05 +11:00
itsmattkc bb326e2b50 nodeview/core: moved node copy/paste functions to core so they can be used elsewhere 2020-03-23 15:27:58 +11:00
itsmattkc 51f02ea01b viewer: allow switching open sequences 2020-03-21 22:18:17 +11:00
itsmattkc e5ac72fa9d Merge branch 'master' into typos 2020-03-19 12:16:09 +11:00
itsmattkc abb4c440fb core: added signalling for timecode display changes
Allows targeted application-wide UI updates for when the user changes the
timecode display so that the response is immediate.
2020-03-18 14:09:31 +11:00
luz.paz 321e7d1606 Fix doxygen and misc. typos
Found via `codespell -q 3 -L ba,keypair,numer,uint`
2020-03-10 15:00:56 -04:00
itsmattkc baf3fbde05 global: made every user action set a project "modified" state that will prevent
the main window from closing instantly
2020-03-03 14:33:45 +11:00
itsmattkc de5955b403 oiiodecoder: implemented rudimentary image sequence support 2020-03-02 14:06:44 +11:00
itsmattkc 02ce48d0c6 various: pixel optimizations
Several things are accomplished in this commit, including:

- Use OIIO instead of our own functions for pixel format conversions
  (cleaner code/less for us to maintain)

- Fold all PixelService functions into the PixelFormat class
  (cleaner code)

- Moved OpenGL pixel definitions to OpenGL classes and out of the
  global classes.

- Add support for RGB buffers as well as RGBA (optimization)
2020-02-27 13:54:38 +11:00
itsmattkc 48cdb3a6dd memorymanager: rewrote entire memory management system 2020-02-23 20:29:51 +11:00
itsmattkc bac33e3d16 importtool: create a sequence automatically from dropped footage if one isn't
open already
2020-02-21 17:28:17 +11:00
itsmattkc e74c4c2d1c global: implemented rudimentary memory manager to use available system memory
without forcing the OS to page swap
2020-02-21 14:20:57 +11:00
itsmattkc 2e38e7e3fb indexmanager: moved files 2020-02-21 10:47:41 +11:00
itsmattkc 03bdf01357 decoder/renderer: no longer index automatically as part of the retrieve
functions

Indexing is a lengthy process and had a high chance of getting RenderWorkers
stuck doing it rather than being responsive to cache requests. This commit
introduces a system where workers never index media, but instead signal that
media is not ready to their RenderBackends which ensure that the media gets
indexed and re-queues the affected frames when those indexes are ready.
2020-02-19 11:44:29 +11:00
itsmattkc 839abdff45 core: use TaskDialog instead of ProgressDialog 2020-02-17 02:11:56 +11:00
itsmattkc 6a47b05ab8 work on oslworker 2020-02-14 02:13:38 +11:00
itsmattkc fdbaa75dff renderer: allow parameters to be changed mid-session 2020-01-22 14:05:37 +11:00
itsmattkc 1101b58ee8 allow setting of pixel format/ocio method/sample format in preferences
Implementation isn't perfect yet, viewer/renderer doesn't update yet when
the preference is changed so a sequence needs to be re-opened for the change to
take effect.
2020-01-18 03:37:36 +11:00
itsmattkc 653709dc84 try to index media immediately on import
Since indexing is supplemental, it can be made a background task that can occur
at more or less any time. So we run it as soon as possible.
2020-01-17 03:58:29 +11:00
itsmattkc 75a9291cd2 refactored import function for greater robustness
The import function was written early on in the rewrite as a multithreaded
background task that was considered somewhat flawed. While it worked for the
most part, there were possibilities of race conditions that could have
potentially been fatal, particularly since media could theoretically be
deleted while the import/probe tasks were running in the background.

With the save/load functions coming in, it became even more complicated as
projects may include metadata about the footage that can't be implemented
easily when the footage is imported/probed in the background. Making importing
a modal task fixes all of these issues, it's still done in a background thread
to not hang the GUI thread, but the GUI thread can be briefly "paused" in a
user friendly way so that all these functions can be safer.
2020-01-15 15:19:14 +11:00
itsmattkc 16878e3c25 implemented much of the project loading logic
Still not functional, but much of the groundwork is done.
2020-01-13 04:09:06 +11:00
itsmattkc fa95a61c7b implemented cancel feedback in project saving
The cancel button now sends a signal to the saving thread to stop.
2020-01-12 16:34:35 +11:00
itsmattkc 00b5672639 implemented saving UI
Implemented the file dialog, save progress dialog, and separate thread to save
in (saving needs to be done in a separate thread so the main/GUI thread doesn't
get blocked).
2020-01-12 16:26:05 +11:00
itsmattkc 362cb9daef made auto-deleting cache on close an option
Previously we had no disk management whatsoever, so we cleared the cache on
every close just to prevent clogging up tester disk space. Now that we are
implementing disk management, there are better things to do on close regarding
disk cache. However, some users may still wish for the app to delete the cache
on close, so it's provided as an option.
2020-01-09 21:00:04 +11:00
itsmattkc 3369bb53f9 implement double clicking a sequence in the project explorer to open it 2020-01-03 21:14:27 +11:00
itsmattkc 26cafa7936 implemented bulk of curve editor's functionality
While certainly not entirely complete yet, this implements most of the UI
functionality of the graph editor.
2019-12-28 18:26:37 +11:00
itsmattkc f96abc2d82 set up sizing defaults 2019-12-28 02:09:23 +11:00
itsmattkc 3e3963dfaa implemented keyframe type changing
Implemented the UI to change a keyframe's type along with the ValueChanged
signals that should result.
2019-12-27 16:37:06 +11:00
itsmattkc 61c60e00d6 various small code cleanups and improvements
Largely refactoring work to make the code somewhat nicer to work with.
2019-12-26 19:00:08 +11:00
itsmattkc 83077c939e removed olive:: qualifier from MainWindow class 2019-12-26 17:41:31 +11:00
itsmattkc bb9284a894 moved tool enum to a Tool class
Code cleanup and improvement.
2019-12-26 17:35:25 +11:00
itsmattkc d140094cf5 moved PanelManager to a more traditional singleton form 2019-12-26 17:27:30 +11:00
itsmattkc 3a7b3ffac6 implemented audio exporting
The encoder was moved to its own thread and will transcode the PCM from the
audio renderer into the chosen codec while the video frames are still
received. The implementation isn't perfect and could use some cleaning up, but
it is functional at the moment.
2019-12-23 01:45:27 +11:00
itsmattkc c5e16ed805 only show export dialog if the sequence is not empty 2019-12-19 15:53:56 +11:00