Commit Graph
174 Commits
Author SHA1 Message Date
itsmattkc 8a64ef75d9 implemented selecting custom export range
Fixes #1314
2020-11-17 09:43:43 +11:00
itsmattkc 1b9bf6d92c switched many QLists for QVectors
Minor optimization
2020-11-16 16:17:43 +11:00
itsmattkc 9a1917d160 used different approach for populating open recent menu
Fixes #1243
2020-11-16 10:23:23 +11:00
itsmattkc 0d0766e4fb improved render channel count system 2020-11-15 22:16:40 +11:00
itsmattkc 8776bb9c4a finished upgrade to ocio v2 2020-11-12 15:36:29 +11:00
itsmattkc ddbca1ba51 Merge branch 'master' of https://github.com/olive-editor/olive into render-singleton 2020-11-12 00:57:12 +11:00
itsmattkc 83cefbd7c7 uhh yeah this might be fubar 2020-11-07 22:44:27 +11:00
Simran de48eba713 Make dialog for saving a project actually a save dialog
AcceptMode defaults to QFileDialog::AcceptOpen
2020-11-02 12:10:20 +01:00
itsmattkc b582843d27 moved things around and started rewriting render backend 2020-10-29 01:36:26 +11:00
itsmattkc bc60c74562 finalized very, very basic OTIO support
Ironed out various project and footage loading issues, and a single
cache invalidation issue.
2020-10-23 01:26:17 +11:00
itsmattkc 9613730ee8 Merge branch 'otio' of https://github.com/olive-editor/olive into otio 2020-10-22 22:13:37 +11:00
itsmattkc 917738d1de Merge branch 'master' into otio 2020-10-22 20:26:16 +11:00
itsmattkc c37607bf66 Merge pull request #1269 from ThomasWilshaw/otio_cmake_fix
Fix building without OTIO support
2020-10-20 23:31:19 +11:00
itsmattkc 0ec262125c otio: added ability to export a whole project rather than a single sequence 2020-10-20 18:15:39 +11:00
itsmattkc db8d321fa7 project: improved loading and footage importing 2020-10-19 14:41:01 +11:00
Thomas Wilshaw 70455c1501 Fix building without OTIO support
Added a new CMake flag that stops any OTIO related cpp files being
built.

Added extra #ifdefs to catch any OTIO related code in other cpp
files.
2020-10-15 18:59:06 +01:00
itsmattkc de9c67a0f8 project: detect project version and show errors on incompatibility 2020-10-03 23:44:32 +10:00
itsmattkc a70f9f15a3 core: merged function for improved code reusability 2020-09-25 16:58:52 +10:00
itsmattkc 24468e283d Merge branch 'master' of https://github.com/olive-editor/olive into otio 2020-09-25 16:32:22 +10:00
itsmattkc bb6d5505f5 otio: began early functionality to export to OTIO 2020-09-25 16:32:18 +10:00
itsmattkc fd143f1d51 Merge pull request #1220 from ThomasWilshaw/Fix_#1218
Fix Issue #1218
2020-09-25 11:18:58 +10:00
Thomas Wilshaw 378708c9d3 Exporter falls back to timeline if all else fails
If no recent TimeBasedPanel can be found the exporter defaults to the
first timeline. If this also fails an error is shown.
2020-09-24 17:46:11 +01:00
itsmattkc 0a1cd0e1c0 ui: force full screen border on Windows
Fixes #1226

Workaround for known Qt issue: https://doc.qt.io/qt-5/windows-issues.html
2020-09-25 00:04:23 +10:00
Thomas Wilshaw 615ce8ef79 Fix Issue #1218
Add an error message if there is no active sequence.

Selected a Sequence panel as opposed to a generic time based panel as
we will only ever export a sequence. Also makes error logic slightly
easier.
2020-09-23 17:59:15 +01:00
itsmattkc 8506c82a0c import: safely handle unsupported files
Fixes #1191
2020-09-18 12:58:55 +10:00
itsmattkc 48ac8ea509 main/core: changed code so that headless would run truly headless with QCoreApplication instead of QApplication
QApplication is designed for GUI/widget programs and thus fails to launch
if no window system is available. For a true headless mode, we must swap
out with QCoreApplication. However, what complicates this is that
QCommandLineParser - the class we use to determine whether we should run
in GUI mode or not - requires an active application instance to work.
This creates an unfortunate catch-22 that ultimately ended in writing a
custom command line parser.

Now we can correctly swap out with QCoreApplication, however this has
exposed other issues regarding functions that unnecessarily rely on QWidget
functions. So they'll need to be sorted out eventually.
2020-08-22 00:22:19 +10:00
itsmattkc 857531b011 core: don't start if help or version args are used 2020-08-13 15:41:28 +10:00
itsmattkc 08d4c7b385 config: save style 2020-08-10 21:37:04 +10:00
itsmattkc 28dcff10c0 various: implement sequence pixel aspect ratios and interlacing settings
Implements the following:
- Sequences have pixel aspect ratios that work in tandem with footage PARs
  to render footage correctly. Viewer and export also acknowledge PARs
- Sequences can have interlacing settings. This doesn't do anything yet,
  eventually the renderer will need to interlace/deinterlace/reinterlace
  appropriately in order to conform all the footage to the sequence. Export
  acknowledges interlacing, but this only affects metadata, not the image.
2020-08-10 01:47:26 +10:00
itsmattkc edeeed49ba various: enabled config saving 2020-08-08 02:44:39 +10:00
itsmattkc df14c2aaa7 cache: better implemented changing disk cache folders
Not complete yet, but getting there.
2020-08-07 02:31:46 +10:00
itsmattkc d5dce29b22 cache: merged cachetask and footagecache into one precache task
Since the actual auto-cache now happens elsewhere, this cleans up a lot of
dead code.
2020-08-05 23:45:18 +10:00
itsmattkc 07a53d45f0 renderer: updated audio waveform generated for new cache overhaul 2020-08-05 22:32:24 +10:00
itsmattkc c8def73b95 cache: mild auto-cache overhaul
Shifted from CacheTask to functionality built into RenderBackend. It was
a lot easier to control behavior this way without having to juggle a ton
of threads and race conditions.

Could likely be multithreaded further.
2020-08-05 02:19:04 +10:00
itsmattkc ae62750d9d various: fix broken transition creation
It's now possible to create transitions! But they're still broken in
a multitude of other ways so plenty more work to do hahahahahahahahaha
2020-07-14 22:31:11 +10:00
itsmattkc b2a3cede2c renderer: re-use the same opengl instance for all background rendering
Previously the OpenGL instance was tied to each render/cache task,
creating and destroying it each time one started and stopped. This was
completely unnecessary since the instance holds no state and can be
shared by all of the render tasks without having to expensively start
a new one.
2020-06-19 17:06:14 +10:00
itsmattkc 0280ade20d project: improved main window layout loading
There were a lot of issues that arose from trying to make GUI changes
from another thread (even though we ran those functions in the right
thread). Now we store layout information until the end of the load and
make the changes then. This works much better from both a business logic
and user experience perspective.

Also prevents multiple sequences from taking focus during load and
starting a render job.
2020-06-19 02:23:06 +10:00
itsmattkc a818e17c55 export: made progress on headless export
Still incomplete and unusable, but less so than before.
2020-06-17 18:06:50 +10:00
itsmattkc 41b04d976c nodes/clips: use node label as clip name and allow changing multiple labels at once
Merges the "clip name" and "node label" into the same entity.
2020-06-16 16:23:05 +10:00
itsmattkc 5c5f09a20c renderer: added generate job
For nodes that produce an image on the CPU before sending it to the GPU.
2020-06-13 03:01:23 +10:00
itsmattkc 0fd8613bca core: set config defaults before anything else
Ensures media cache folder isn't created in `~/.local/share` root and its
own folder instead.
2020-06-12 17:22:05 +10:00
itsmattkc dd7af0e6bd nodes: minor overhaul to functionality
The nodes now have more control over how their accelerated shaders/sample
functions are run, as well as how items are popped off the value tables.
This allows for various optimizations that we didn't have access to before.
2020-06-12 00:54:15 +10:00
itsmattkc 50b4c1e456 sequence: rather than a static divider in config, default to a heuristically generated one 2020-06-08 15:18:01 +10:00
itsmattkc 430561e2ac sequence: made divider a sequence parameter rather than a viewer parameter
Doing this makes the preview resolution an explicit project setting rather
than a temporary UI setting. This will allow more consistency when caching.
2020-06-08 14:41:35 +10:00
itsmattkc 0e87762afa waveforms: moved waveform to track rather than block
This is a much more robust and thread-safe system of storing the waveforms.
2020-06-04 18:03:21 +10:00
itsmattkc efdf56acf8 cache: improved code pathways for cache
Viewers are now more aware of each other and can pause each others' cache tasks
when one of them plays, as well as wait for other viewers' cache tasks to
finish before starting their own.
2020-05-24 18:10:38 +10:00
itsmattkc 89ae6e026f cache: reimplemented auto-caching
Implemented a smarter auto-cache that's context sensitive. Caching will
automatically pause when playback begins or values are being changed and resume
when inactive.
2020-05-24 15:20:35 +10:00
itsmattkc d5766489e4 export: fixed audio exporting with new renderer system 2020-05-21 02:18:52 +10:00
itsmattkc b9cd83eff1 task: massively simplified task system
Made various changes and fixes to the task system:

- Tasks are built around QtConcurrent rather than QThread. Reduces
  code complexity significantly.
- Task error reporting is now streamlined in both TaskManager and
  TaskDialog.
- Moved ProjectImport/Save/LoadManager to the app/task folder
2020-05-19 02:44:32 +10:00
itsmattkc 863ae1b913 a first attempt at a new render system 2020-05-14 14:43:03 +10:00