Commit Graph
64 Commits
Author SHA1 Message Date
itsmattkc b5cc13c10e timeline: snap pointer and import operations to timebase
If frame rates are mixed, ensures that video doesn't end up falling or ending on half frames which potentially make the entire sequence awkward
2020-11-25 11:46:41 +11:00
itsmattkc 857e4b046d timeline: when inserting gaps, only do one per track 2020-11-20 19:37:00 +11:00
itsmattkc afbd3ada36 bypass track invalidate length limit on trim command 2020-11-18 19:34:12 +11:00
itsmattkc 04dd502a40 nodes: bypass invalidate length limit for certain track operations
Fixes #1290
Fixes #1228
2020-11-18 12:56:00 +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 81450044e0 added preference for duplicating dependencies
Fixes #1320
2020-11-16 16:32:15 +11:00
itsmattkc 1b9bf6d92c switched many QLists for QVectors
Minor optimization
2020-11-16 16:17:43 +11:00
itsmattkc 787ea1d548 Merge branch 'master' into ui-optimizations 2020-10-05 15:19:57 +11:00
itsmattkc 8b4a073f35 timeline: implemented system of moving selections and making them undoable 2020-10-03 22:33:10 +10:00
itsmattkc 4204910796 nodes: link edges to IDs rather than objects
Allows code to know whether the connected parameters has been removed or
not.
2020-10-02 16:04:50 +10:00
itsmattkc 2fb7066155 nodes: allow stalling graph signals until an operation is over 2020-10-02 13:25:49 +10:00
Thomas Wilshaw 9d27d557cd Replace custom unlink with BlockUnlinkAllCommand
Re-use existing unlink command and move all the unlinking code to
NodeRemoveCommand to cover all bases (deletion of a block in the
timeline or in the node editor).
2020-09-30 18:14:11 +01:00
itsmattkc d99a8e9005 timeline: refactored "replace with gap" command fixed bug
Fixes an unfortunate bug that restored blocks in the wrong order and leads
to a segfault if you continue undoing beyond that point.
2020-08-20 13:40:58 +10:00
itsmattkc 75c3a37c17 removed speed/duration dialog
This is the first step in what will eventually be keyframable time
remapping. The speed/duration dialog was a holdover from 0.1 and we can
probably do better here.
2020-08-19 17:42:52 +10:00
itsmattkc 023ded1fb5 timeline: overhauled pointer tool again
Allows dynamic switching between pointer/roll/slide since occasionally this
behavior is interchangeable. Fixes a lot of transition behavior (but not
all of it).
2020-07-23 18:37:57 +10:00
itsmattkc ce353ccbed timeline: various work to improve timeline behavior, particularly when dealing with transitions 2020-07-22 18:09:57 +10:00
itsmattkc de74adeb5e nodes: improved changed signal processing
Improves stability and cache reliability.

Earlier iterations were prone to skipping necessary signals (usually
leading to some sort of assert fail), particularly when track
optimizations were used. Those optimizations have been moved to the
viewer node so there's a higher degree of control over which signals
get optimized and in which ways.
2020-07-16 00:32:00 +10:00
itsmattkc a239fa0e2f timeline: fixed some ripple tool behavior bugs 2020-07-07 18:06:49 +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 be784591fc timeline: optimized pointer tool ctrl+drop 2020-06-06 17:50:23 +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 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 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 9c59691295 timeline: blocked more unnecessary graph invalidations 2020-05-25 22:11:47 +10:00
itsmattkc 863ae1b913 a first attempt at a new render system 2020-05-14 14:43:03 +10:00
itsmattkc ac3f49a845 nodes: moved matrix input on "video input" elsewhere
Rather than plugging a matrix into the video input node, the matrix is now
multiplied by the video input using a math node. This is probably more
sensible from a user perspective.

This also means the renderer is tolerant of texture sizes that are not equal
to the sequence size, however most nodes will downsample the texture to the
sequence size (and if not, it will be downsampled once it is cached). Textures
will still *always* be in reference space and the sequence's format. This seems
like the best compromise between backend and frontend congruity.
2020-04-27 04:11:24 +10:00
itsmattkc f61321d68b nodes/timeline: correctly detect when tracks are removed from the graph
Fixes several segfaults that could result from this occurring.
2020-04-27 01:01:12 +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 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 832cc986b7 timeline/block: reimplemented enabling/disabling blocks 2020-04-17 02:16:04 +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 0acad08887 timeline: unlink clip if it is completely overwritten 2020-04-05 23:19:55 +10:00
itsmattkc 53955e9632 timeline: fixed array index out of bounds bug 2020-03-31 02:23:00 +11:00
itsmattkc 67d8ad571d timeline: remove blocks from timeline if a place command has overwritten them 2020-03-30 18:06:02 +11:00
itsmattkc 6624f14517 timeline: temporarily disable optimization that doesn't re-cache after split
Since waveforms are generated during the cache process, if clips don't cache,
a waveform isn't generated for them. Therefore for now, this optimization will
be disabled but should be re-enabled later when waveforms are improved to handle
this situation.
2020-03-30 15:14:06 +11:00
itsmattkc 02e7c68104 timeline: reimplemented linking/unlinking functionality 2020-03-15 13:41:46 +11:00
itsmattkc b57b091ca4 timeline: auto-unlink blocks when they're deleted 2020-03-15 13:15:36 +11:00
itsmattkc dc37389d02 timeline: implemented in/out points 2020-03-08 01:06:45 +11:00
itsmattkc 52fc4f064b timeline: rewrote ripple deleting into an undoable command that takes place
after the gaps are made and cleaned

Results in more reliable ripple delete behavior.

Also fixes bug that would cause gaps that were cleaned and then restored in an
undo to crash when selected.
2020-03-07 20:42:07 +11: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 9cb04b0020 timelineview: simplified TrackRippleRemoveAreaCommand and fixed bug that
incorrectly calculated the splice copy's media in
2020-02-22 01:14:38 +11:00
itsmattkc c7a3906c97 timelineview: fixed bug that wouldn't invalidate all necessary regions of the
cache when using rippleremovearea
2020-02-22 00:49:57 +11:00
itsmattkc 1dfac0ea7f timeline: removed unused variable in undo command 2020-01-19 23:52:23 +11:00
itsmattkc d9572fa4e5 only allow splitting clips 2020-01-07 19:04:24 +11:00
itsmattkc 5d8be03970 implemented support for trimming transitions 2020-01-07 01:47:58 +11:00
itsmattkc e71697f693 fixed bug in ripple remove undo command where blocks deleted at the start of
the track would be restored at the end
2020-01-06 18:13:56 +11:00
itsmattkc dae09abf45 use speed value instead of media out value
This functions more or less identically to using a media out value, but the
desired speed is preserved through block length changes, even if the block's
length is reduced to zero (i.e. no rounding errors).
2020-01-06 15:21:27 +11:00