Commit Graph
129 Commits
Author SHA1 Message Date
itsmattkc 6ecdb02fd0 okay maybe not 2020-11-08 00:47:59 +11:00
itsmattkc 07dc7104c5 made timerangelist a encapsulation rather than a derivation
Locks off functionality that really shouldn't be used.
2020-10-29 02:18:41 +11:00
itsmattkc b582843d27 moved things around and started rewriting render backend 2020-10-29 01:36:26 +11:00
itsmattkc 1e6208517f decoder: fixed regression in image handling in OIIO decoder
Fixes #1277
2020-10-27 12:36:55 +11:00
itsmattkc cf07e52b76 fixed another shadowed variable 2020-10-24 12:05:52 +11:00
itsmattkc 253dd86da8 updated OTIO functions for renamed functions 2020-10-24 10:13:06 +11:00
itsmattkc 4082f6d938 Merge branch 'master' of https://github.com/olive-editor/olive 2020-10-23 01:26:49 +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 33a0c2d728 Merge pull request #1275 from ThomasWilshaw/stream
MediaInput: Rename streams access methods.
2020-10-20 23:32:00 +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
Thomas Wilshaw 4ddc659335 MediaInput: Rename streams access methods.
Change MediaInput::footage() to MediaInput::stream() and
MediaInput::SetFootage() to MediaInput::SetStream() as they access
streams not footage.

Also update all instances of access methods to reflect this change.
2020-10-19 15:50:36 +01: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 911d13164c render task: queue all hashes and audio tasks in advance 2020-10-14 17:05:15 +11:00
itsmattkc f7ab0bb640 audio: rewrote audio cache to write to contiguous segments rather than one long file
Fixes issues with PCM file placement, optimizes some audio-based timeline
and cache operations, just generally a better approach.
2020-10-11 23:27:40 +11:00
itsmattkc de9c67a0f8 project: detect project version and show errors on incompatibility 2020-10-03 23:44:32 +10:00
itsmattkc 30e5a442a8 import: fixed bug where image sequences were set to regular videos 2020-09-27 00:59:03 +10:00
itsmattkc b220dd88e7 otio: implemented some basic import/export functionality
Certainly not complete, but mild import/export capability.
2020-09-27 00:39:51 +10:00
itsmattkc 6db591e89f footage: merge video and image streams and improve image sequence import process
Image streams were initially separated from video streams, but they're now
joined with a parameter defining if they're a still image, image sequence,
or regular video. The image sequence import process has also improved so
that if images from the same sequence are imported too, they'll either be
ignored or the user won't be asked again for those if they should be an
image sequence (fixes #1193). Also shifts decoder "probe" process to return
an item, useful if the decoder returns a non-footage item.
2020-09-26 19:45:07 +10:00
itsmattkc ab41333da9 otio: renamed ProjectSaveAsOTIOTask to ExportOTIOTask 2020-09-25 16:59:19 +10:00
itsmattkc bb6d5505f5 otio: began early functionality to export to OTIO 2020-09-25 16:32:18 +10:00
itsmattkc 27a4dbc85f import: fixed progres reporting 2020-09-18 13:19:18 +10:00
itsmattkc 8506c82a0c import: safely handle unsupported files
Fixes #1191
2020-09-18 12:58:55 +10:00
itsmattkc f6760386ce renderer: improved handling of pixel aspect ratio and footage cache 2020-08-21 14:43:13 +10:00
itsmattkc 078c54e58b projectloadtask: move the project to the main thread, not the task
How did this get overlooked for so damn long holy shit dude
2020-08-17 00:00:51 +10:00
itsmattkc 4e3cafe578 precachetask: removed unnecessary hash setting
Pre-cache doesn't need to set a memory cache since its only purpose is to
write to the disk cache.
2020-08-10 02:08:58 +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 a34d696138 various: fixed issues on some compilers 2020-08-06 01:50:49 +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 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 dca4c6d960 export: allow rgb32f and rgba32f to pass through ocio without conversion
Minor optimization.
2020-07-24 14:45:55 +10:00
itsmattkc efd90d5c8f renderer: use shared backend when caching
I think there was an earlier commit with a similar name but turns out
I'd only done foundational work in that commit and never actually
properly set it up. Of course once I did, there were several issues that
needed fixing to make it work correctly, but now it works as expected.

Heavily optimizes larger projects by allowing cache jobs to only copy
what has changed.
2020-07-10 18:39:47 +10:00
itsmattkc 919314cce8 renderer: improve thread safety
Since we share render backends between the viewer and cache tasks now, we
should ensure the render backend is thread safe.
2020-07-07 13:16:25 +10:00
itsmattkc a45f514f68 renderer: share render backend for auto-cache tasks
Since auto-cache events start and stop fairly frequently (and are somewhat
heavy to create/destroy), we can save a lot of cycles over time by sharing
the same backend between them all.
2020-07-06 14:22:17 +10:00
itsmattkc a94caa5737 export: fixed bug that broke audio on export 2020-06-19 20:25:49 +10:00
itsmattkc 65ccac1dfe renderer: fixed bug that would render frames even after hash matching
Also enables the -Wshadow GCC warning to warn against the code bug that
caused this issue (and has caused other issues like it in the past).
2020-06-19 20:25:05 +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 f70f266ca0 render: queue audio alongside video
Previously, audio was all queued first and would therefore all have to
finish before any video frames could start caching. No longer! Now they're
queued side by side so users won't have to wait for audio to finish before
their cached frames come in.
2020-06-16 03:49:12 +10:00
itsmattkc 6a4f3f613c rendertask: remove sorting code and calculate duplicate hashes while retrieving
These are two changes that speed up when frames start getting rendered
and processed (particularly for larger scale projects):

* Sorting of time beforehand was done to optimize decoding but is actually
unnecessary since the frames are already sequential when they're retrieved
from the range. As long as we maintain that order, no sorting is required.
This speeds up caching IMMENSELY.

* Evaluate hashes concurrently while retrieving frames. Before, this was
done before any rendering and could therefore delay rendering by several
seconds. Doing them concurrently means frames start rendering almost
immediately and further hashes can be analyzed while we wait for frames to
finish rendering.
2020-06-16 03:07:53 +10:00
itsmattkc f2ab9839e5 project: save to temp folder first and then overwrite actual file
With this commit, we save to a temporary file first and then cat the end
run a copy to overwrite the source file. If the save somehow fails or the
program crashes mid-save, this will prevent the user's project file from
getting corrupted.
2020-06-15 15:41:24 +10:00
itsmattkc a9a13c4b0c framehashcache: remove code for saving integer-based frames to cache
Since we don't allow non-float cached frames now, there's no need to have
this code complicating the codebase.
2020-06-10 14:12:26 +10:00
itsmattkc 9095dfa463 project: replaced proxy with pre-cache
Removed proxy task and replaced with a true honest-to-god pre-cache for
footage. This footage is pre-cached to a sequence and therefore 100% ready
for use in it once the task is done.
2020-06-08 23:17:51 +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 b9de8ea035 rendertask: include audio in progress signal 2020-06-06 18:24:28 +10:00
itsmattkc 242994c736 rendertask: initialize nb_frames
The code path doesn't ever use this value uninitialized, but GCC is unaware
and still presents a warning.
2020-06-05 15:53:07 +10:00