Commit Graph
86 Commits
Author SHA1 Message Date
itsmattkc 60f7f06de4 implemented base for thumbnail display 2022-05-25 11:18:08 -07:00
itsmattkc f124ad3178 cache waveforms at clip level 2022-05-22 20:54:59 -07:00
itsmattkc bfd6a407a5 Merge branch 'master' into hashremoval 2022-05-16 09:12:49 -07:00
itsmattkc 4b366a9b73 update copyright year to 2022 2022-05-10 10:38:56 -07:00
itsmattkc 08f3cb3cc3 remove hashes from nodes 2022-05-09 18:30:36 -07:00
itsmattkc 8f7280dd09 clip: add missing retranslate 2022-05-04 15:19:20 -07:00
itsmattkc d55d9c820f code: use macros for default node functions
Easier to maintain
2022-05-04 11:01:17 -07:00
itsmattkc 028d2fd60c nodes: optimize job infrastructure
Rework traversing so that jobs are only resolved when they are used. This should provide moderate optimize to the traversing process.
2022-05-03 11:19:21 -07:00
itsmattkc 6a0b5856c9 various: extended marker and timeline functionality 2022-05-01 21:17:22 -07:00
itsmattkc d1bb931854 nodeparamview: implemented add button 2022-04-26 14:23:19 -07:00
itsmattkc 245a0a112a clip: fixed speed/reverse order 2022-04-11 18:30:17 -07:00
itsmattkc 60e5241f05 clip: fixed waveform issues with speed and in trimming 2022-04-11 16:41:14 -07:00
itsmattkc 80d53c6d0c clip: improve waveforms when reversed 2022-04-11 16:25:32 -07:00
itsmattkc 019b3cfe29 implemented maintaining audio pitch and reversing 2022-02-01 13:39:43 -08:00
itsmattkc 963607b7d3 clip: retrieve any connected viewer on invalidate 2021-10-21 11:52:01 -07:00
itsmattkc 4e5a9712c0 clip: fixed reversing
Adapted from PR #1656
2021-10-16 12:07:48 -07:00
itsmattkc dc7f7a6dda formalized valuehint as a class 2021-09-21 20:13:14 -07:00
itsmattkc 7ba5dca4ab renderer: always hash along edges 2021-09-19 23:11:20 -07:00
itsmattkc 67c7c71ca2 implemented "value hints" for choosing output values to use 2021-09-17 20:56:53 -07:00
itsmattkc b07bccb7dc nodes: revert to single output 2021-09-07 22:01:36 -07:00
itsmattkc a0706a78d8 nodes: implemented core of manual table value selection 2021-09-07 15:27:07 -07:00
itsmattkc be4a18d7de moved visual waveforms to block
This should be nicer, however it has a bug that I need to fix
2021-08-01 16:43:53 -07:00
itsmattkc 6995ffe015 reworked timeline elements 2021-08-01 11:05:18 -07:00
itsmattkc c3faa49686 transition: reworked hashing 2021-07-29 13:23:24 -07:00
itsmattkc 4bbc75392a nodes: rewrote and simplified length signaling system 2021-07-15 21:00:18 -07:00
itsmattkc 310fd3541a various: greatly simplified job times
Hopefully this doesn't break everything
2021-07-11 23:33:21 -07:00
itsmattkc cc21ed37a7 implemented core subtitle support 2021-05-18 12:42:47 +10:00
itsmattkc f4e1856d30 clip: use super macro
Minor code improvement.
2021-04-26 21:45:04 +10:00
itsmattkc 74ad4110be transform: hash the generated matrix
Making an exception for the transform node, we use a slightly
heavier hash to save more rendering time later.

Fixes #1560
Addresses some of #1360
2021-04-22 18:01:26 +10:00
itsmattkc 269fa6d905 remove block enum
Replaced with dynamic casts.
2021-04-22 11:50:24 +10:00
itsmattkc 77d4b18a60 updated copyright year for 2021 [skip ci] 2021-04-17 18:56:50 +10:00
itsmattkc 210eb86cd2 nodes: fixed hashing issues 2021-04-11 18:54:22 +10:00
itsmattkc cfbf563b2e ensure cache modified time is accurate 2021-02-22 00:23:34 +11:00
itsmattkc d7c5ac4b44 implement entire project in nodes
Project items are now represented directly in nodes opening up more versatility and possibilities. This is the first iteration of this and will be buggy. Need to test thoroughly.
2021-02-15 21:31:57 +11:00
itsmattkc 81c1922911 use strings to connect nodes
This makes the node system somewhat more high-level with the intent of making
working with them far more flexible and stable. By making the architecture more
abstracted, it becomes far less rigid which should allow us to do even more
with it and make it much less crash prone.
2021-02-09 15:48:37 +11:00
itsmattkc fbdda3d6d4 various code cleanups 2021-01-13 12:05:05 +11:00
itsmattkc 181235f6ce began new infrastructure
Yep, this is another one of my "famous" sweeping rewrites. Expect things to break.

Goals for this are:
- Greatly simplify node connections (particularly with arrays) so the code requires less maintenance/is more stable
- Redesign node structure to address issues where UI would stall for lengthy periods of time
- Less reliance on shared ptrs/greater reliance on QObject system for inheritance/memory management
- General code cleanup and improvements
2021-01-05 11:20:38 +11:00
itsmattkc 75d4cd899b use hardcoded namespace
The macro defined namespaces confused the hell out of lupdate and more or less broke translations permanently. Looks like the only way we can do it is to have a hardcoded namespace, which goes against my instinct, but honestly how likely is it that we'll change the namespace anyway (I guess forks might want to do it, but that's their problem ;) )
2020-11-17 20:24:42 +11:00
itsmattkc d241090a9f finally updated the copyright year 2020-11-17 20:13:22 +11: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 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 644fb7cec8 block: fixed buggy cache invalidation behavior when resizing blocks 2020-06-01 17:39:08 +10:00
itsmattkc 1fce380cc6 timeline: automate waveform resizing
Now each UndoCommand won't have to handle it (unless it can introduce
specific optimizations).
2020-06-01 14:54:14 +10:00
itsmattkc c2e47a296c timeline: heavily optimized and improved nearly all timeline optimizations
Features a lot of timeline-related cache optimizations as well as general
optimizations and improvements in timeline behavior. Should improve
usability significantly.
2020-06-01 04:42:59 +10:00
itsmattkc d49c6a059c nodes: optimize blocks so they don't unnecessarily change the hash 2020-05-06 16:14:23 +10:00
itsmattkc 53ae25a7cb nodes: optimize node graph changes by only updating from inputs that changed
A huge optimization that ensures only the parts of a node graph that have
changed get pushed to the renderer. For thread-safety, the node graph is
copied elsewhere so that users can make changes asynchronously and the graph
can update when its threads are ready. Up until now, if an input value changed,
every node's values would be re-copied, or worse, if a connection was changed,
the entire graph would be recopied. This has been negligible in testing since
we've been largely testing with small graphs, but for massive projects, it's
important that this be as optimized as possible.
2020-04-26 04:16:15 +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 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 7bca61608a node: added qstringliterals to node IDs
Minor code optimization.
2020-03-28 18:02:34 +11:00
itsmattkc c5d3c4ff36 node: implemented convenience functions for transforming time
Implements a function that calculates the time transformation(s) only between
one node and another.
2020-03-26 00:26:13 +11:00