Commit Graph
3583 Commits
Author SHA1 Message Date
itsmattkc ccf5d4cece audiovisualwaveform: detect if the start index exceeds the buffer sample count
Fixes segfault.
2020-06-11 21:24:50 +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 71ec148e76 renderer: moved all shader code into one solidified function
Makes texture-based optimizations easier when they're all in one place.
2020-06-10 01:54:02 +10:00
itsmattkc 29537fea3c app: don't use hidpi application attribute
This seems to cause issues on various platforms and isn't required a lot of the
time:

* macOS doesn't need this since the HiDPI setting is in the bundle's Info.plist
* Windows doesn't need this, in fact it seems to make fractional HiDPI worse
* Linux... who knows how to get HiDPI working on Linux
2020-06-09 16:18:14 +10:00
itsmattkc 494609410b timeline: when trimming, removing adjacent if its length is reduced to zero 2020-06-09 15:38:47 +10:00
itsmattkc 43513a2b3c Merge branch 'master' of https://github.com/olive-editor/olive 2020-06-09 13:56:34 +10:00
itsmattkc 4b311ea3bf projectexplorer: added unused attribute to parameter that should be used later
Fixes another GCC build issue.
2020-06-09 13:53:51 +10:00
itsmattkc 0f301cfdcc manageddisplaywidget: show colorspaces as well as DVL 2020-06-09 13:53:20 +10:00
itsmattkc f436bab2d5 sequence: initialize values when loading from XML 2020-06-09 13:31:43 +10:00
itsmattkc 6d465c0aaf Merge branch 'master' of https://github.com/olive-editor/olive.git 2020-06-09 13:08:20 +10:00
itsmattkc a18d523b51 projectexplorer: appropriately renamed "proxy" to "pre-cache" 2020-06-09 02:37:11 +10:00
itsmattkc e10b1462ff renderbackend: moved bulk of hashing code to static function so more code has access to it 2020-06-09 02:36:11 +10:00
itsmattkc 2fc1ccebf7 openglproxy: implemented extra function for loading pre-cached frames into textures 2020-06-09 02:35:41 +10:00
itsmattkc 52ca18d5e1 viewer: moved cached frame loading code so that more classes have access to it 2020-06-09 02:35:13 +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 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 ee3fa529cb audiovisualwaveform: reinterpret cast to char*
Bypasses GCC warning about qfloat16's constructor.
2020-06-08 04:03:24 +10:00
itsmattkc 532af463f0 sequencedialog: extended sequence dialog to include presets
Also includes the ability to make custom presets which negates the need for
setting default sequence parameters in preferences.
2020-06-08 03:12:54 +10:00
itsmattkc b9de8ea035 rendertask: include audio in progress signal 2020-06-06 18:24:28 +10:00
itsmattkc be784591fc timeline: optimized pointer tool ctrl+drop 2020-06-06 17:50:23 +10:00
itsmattkc aaee2ab9ed timeline: vastly improved snapping 2020-06-06 13:59:49 +10:00
itsmattkc 5055c136b6 renderer: clear graph update queue when disconnecting a viewer 2020-06-06 01:02:03 +10:00
itsmattkc 550d30ed8f viewer: rewrote playback code for stability
The viewer playback used to rely primarily on the vsync, which was
extremely smooth, but had issues when there was only audio or the viewer
was hidden. This was bodged by attaching to the audio in these scenarios,
but still not perfect.

Now we run a timer in tandem with vsync for the best of both worlds.
Playback is no longer wholly reliant on vsync, yet the viewer can remain
as smooth as possible using vsync.
2020-06-06 00:20:06 +10:00
itsmattkc bad039e7a9 playbackcache: don't invalidate if the cache has no length
Prevents zero-length invalidations.
2020-06-05 17:21:46 +10:00
itsmattkc 593316876f track: save and load track heights to and from project files 2020-06-05 16:12:00 +10:00
itsmattkc 4a8d557c59 various: removed unused debug lines 2020-06-05 16:11:49 +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
itsmattkc 33e3225c89 audioplaybackcache: use std::rand instead of QRandomGenerator
Improves support for versions of Qt < 5.10.
2020-06-05 15:47:00 +10:00
itsmattkc 7609754103 playbackcache: more intelligent job matching
Ensures audio ranges can be anticipated and accurately ignored if they're
old or acknowledged if they're current.
2020-06-05 15:23:16 +10:00
itsmattkc b143b39869 track: provide control over invalidation when setting length 2020-06-05 15:21:11 +10:00
itsmattkc de3288893d renderer: move waveform generation into worker and mutex the waveform
Addresses scheduling issues where a backend might be closed (or even
destroyed) before it processes a waveform signal from a worker. Requires
extra multithreading code.
2020-06-05 15:18:14 +10:00
itsmattkc ddf63b39e1 viewer: don't invalidated zero-length ranges
A zero-length range doesn't represent any amount of time and has no need
to actually invalidate anything.
2020-06-05 15:15:59 +10:00
itsmattkc a29de7cea0 audiovisualwaveform: allow only partial sum overwrite 2020-06-05 15:02:44 +10:00
itsmattkc 5ce508a1da timerange: fixed issue that broke removing timeranges from a timerangelist 2020-06-05 14:43:18 +10:00
itsmattkc 2fd897c380 viewer: keep track of viewer length
Useful for determining if the view should be updated from a length change.
2020-06-05 04:31:44 +10:00
itsmattkc 8051a42fcc timerange: added some helper functions for comparing timeranges and rationals 2020-06-05 04:30:59 +10:00
itsmattkc cb0d89c09e rational: print double rather than rational to debug
Doubles are mostly used here anyway.
2020-06-05 04:30:39 +10:00
itsmattkc 5eeef76b62 waveform: shift track waveform alongside cache 2020-06-04 23:32:50 +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 9ff9817b95 cache: use render job times to synchronize cache
Ensure old inaccurate jobs are never prioritized over current jobs.
2020-06-04 16:48:23 +10:00
itsmattkc cc34f0e251 viewer: ensure view is updated if the cache is shifted
Also moves "ForceUpdate" to a queued connection so it occurs as soon as
the rest of the processing is done. This ensures the viewer isn't updated
too early.
2020-06-03 03:49:39 +10:00
itsmattkc 12be8f72f1 node: disconnect all parameters before destroying them
Fixes a common segfault where destroying a node may ripple a disconnect
signal up the graph and trigger something to try to access its
(now-destroyed) parameters.
2020-06-03 03:40:31 +10:00
itsmattkc fb5c06db50 audiooutputmanager: use deleteLater instead of delete
Ensures destructor is run in its own thread.
2020-06-03 03:39:02 +10:00
itsmattkc e30d278327 playbackcache: made thread-safe
Since this class is regularly accessed by multiple threads, it makes the
most sense to make all of its functions thread-safe.
2020-06-03 03:38:28 +10:00
itsmattkc 08eb12710c audiovisualwaveform: ignore OverwriteSums if input data is empty
Prevents potential index out of bounds error.
2020-06-03 03:37:46 +10:00
itsmattkc f2050a0342 timeline: optimized rippling workarea, rippling to in/out, and the ripple tool
Use cache shift functionality introduced in previous commit to optimize
timeline usage.
2020-06-02 04:24:12 +10:00
itsmattkc 11bfe61208 cache: began base implementation of "shifting" the cache
Should be a fairly important optimization to make.
2020-06-02 01:38:12 +10:00
itsmattkc 6acfe995fa timerange: use doubles instead of rationals when printing debug info
Doubles are infinitely more readable and have been the vast majority of
debug printing cases thus far.
2020-06-01 17:45:21 +10:00
itsmattkc 1301d4b9cf rational: use true min/max values for extended range
Will address issues caused by comparisons to our MIN/MAX constants when
a numerator/denominator is > INT32_MAX/MIN.
2020-06-01 17:44:42 +10:00