itsmattkc
c8baf4aa3e
implemented rubberband zoom in timeline
2020-01-07 20:24:07 +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
d3ed7f9863
hash the transition's progress
...
Since the transition progress directly affects the resulting image, it's
important to include it in the frame hash.
2020-01-06 17:25:38 +11:00
itsmattkc
8358d7d221
moved progress calculations from openglworker to transitionblock
...
These functions are universal transition functions that have use outside of
the OpenGL workers.
2020-01-06 16:35:45 +11:00
itsmattkc
8391a732b1
automatically store block connections in the transitionblock class
...
Convenience code that automatically returns valid blocks if they're connected.
2020-01-06 16:29:14 +11:00
itsmattkc
402f031be2
fix connections for new tracktype namespace
2020-01-06 15:43:21 +11:00
itsmattkc
7bf2422c44
moved timeline tracktypes into timelinecommon.h
2020-01-06 15:34:12 +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
itsmattkc
31b60664a7
Merge branch 'merge-timeline-and-viewer'
2020-01-04 02:45:26 +11:00
itsmattkc
55135114b9
fixed that would erroneously pass a zero integer instead of null value
2020-01-03 18:19:01 +11:00
itsmattkc
df837efbc6
merged timeline and viewer nodes together
2020-01-03 03:26:00 +11:00
itsmattkc
dd77ea46a5
nodeinput: remove unused bool member
2020-01-02 05:04:46 +11:00
itsmattkc
fd2d0f941c
block: add access functions to primary block inputs (length/media in+out)
2020-01-02 05:04:10 +11:00
itsmattkc
62e94ca2cb
improved a number of pointer tool functions and fixed a number of bugs
2020-01-02 01:30:43 +11:00
itsmattkc
2b24fae26f
implemented vertical "zooming" in the TimelineWidget and CurveView
...
This comes in the form of changing the vertical scale in the CurveView and
adjusting all track heights in the Timeline.
2019-12-31 00:23:28 +11:00
itsmattkc
0db13a96ab
implemented a footage viewer
...
Essentially a minor derivation of a viewer type that can automatically view
footage from the project (i.e. not in a sequence).
2019-12-30 20:17:48 +11:00
itsmattkc
41927512e9
fixed dodgy implementation of NodeInput::get_keyframe_at_time
...
This function didn't return the intended result. This bug has been fixed in this
commit.
2019-12-30 16:05:24 +11:00
itsmattkc
245aa44efc
implemented support for multilayered keyframes
...
This adds the ability to keyframe more than one value per input (e.g. a vec2,
vec3, etc.) so that you can animate, for example, an X axis separately from a
Y axis.
2019-12-30 04:47:23 +11:00
itsmattkc
ae84067084
reworked NodeInput to accept more than one keyframe "track"
...
To allow keyframing of each axis of a vector 2/3/4, without simply separating
the inputs for each axis, the NodeInputs need to support more than one keyframe
track with the ability to merge them into a single value when necessary.
2019-12-30 02:12:48 +11:00
itsmattkc
994d8be961
implemented bezier interpolation into parameters inputs
2019-12-28 23:21:07 +11:00
itsmattkc
1d3d52db9b
implemented the ability to modify bezier points in the curve editor
2019-12-28 22:40:30 +11:00
itsmattkc
bbef9badc7
implemented moving keyframes around in the NodeParamView
...
Can now change the time in the parameter panel.
2019-12-27 22:13:00 +11:00
itsmattkc
3e3963dfaa
implemented keyframe type changing
...
Implemented the UI to change a keyframe's type along with the ValueChanged
signals that should result.
2019-12-27 16:37:06 +11:00
itsmattkc
855fe5e93f
fully implemented setting keyframes and standard values in the NodeParamView
...
Widget now supports creating keyframe and standard values, supports dragging
from sliders (not creating an undo command for each drag), and everything is
undoable.
2019-12-27 14:51:21 +11:00
itsmattkc
e9663f953e
improved intelligent keyframe cache invalidation
...
Some minor code cleanups and also implementing invalidation when removing or
moving a keyframe.
2019-12-27 03:26:27 +11:00
itsmattkc
cc62c1edc9
implemented context sensitive value invalidation in NodeInput
...
NodeInput uses keyframe information to intelligently determine exactly which
time ranges must be re-cached.
2019-12-27 03:00:13 +11:00
itsmattkc
e32376a8b7
updated NodeInputs to use a standard value as well as keyframed values
...
Previously the non-keyframed value was stored as a static keyframe but this
introduced issues when an input was in a state of keyframes being enabled but
0 keyframes existing. Having a standard value makes much more sense.
2019-12-27 02:06:41 +11:00
itsmattkc
7a512cc540
set some parameters to not-keyframable
2019-12-27 01:25:52 +11:00
itsmattkc
87eacb2869
fix input bug that doesn't deep copy keyframes correctly
2019-12-26 21:51:08 +11:00
itsmattkc
e8808f5e89
shifted IC unblocking until after the split is done since the clips won't change
2019-12-26 19:29:48 +11:00
itsmattkc
a514265fc9
updated NodeKeyframe class to QObject for easier signal/slot handling
...
While the keyframes themselves are relatively simple, their usage is quite
complex and using QObjects as their base will help a ton of UI and backend
functionality.
2019-12-26 16:30:25 +11:00
itsmattkc
c62b59965e
updated nodes for new input structure
...
Since all NodeInputs will generally only need their data type and default
value set once, we place it all into the constructor for cleaner and easier
to manage code.
2019-12-26 16:29:56 +11:00
itsmattkc
97c192672e
constructed keyframeview and timeruler together inside nodeparamview and connected them
2019-12-25 02:42:07 +11:00
itsmattkc
dc6d498da8
began UI for keyframing
...
Largely extending the existing NodeParamView with functionality from the
previous release.
2019-12-25 01:20:46 +11:00
itsmattkc
62f9e55609
implemented foundational reversed block code
...
Ensured renderers can handle clips that are reversed.
2019-12-24 16:17:33 +11:00
itsmattkc
f0cd480540
finished audio effects support in audio renderer
...
Working structure implemented in previous commit into the audio renderer is
complete in this commit.
2019-12-24 14:02:07 +11:00
itsmattkc
7ad2eae7a2
implemented volume and pan effects
...
This commit implements a structure for sample processing and two implemenations
of this structure in volume and pan effects.
2019-12-24 12:34:30 +11:00
itsmattkc
57c0b93ba5
updated more classes for the moved decoder code a few commits back
2019-12-21 20:17:30 +11:00
itsmattkc
7a7d304268
use uuid for identifying viewers
...
To aid generating a cache ID, each viewer node needs a UUID. Previous iterations
tried to hash a name and time, but a UUID is a much more efficient way to do
this.
2019-12-20 04:32:17 +11:00
itsmattkc
b308f753b3
with Block::set_length_and_* functions, keep the speeds correct
...
With differently set speeds, these functions would mess with the timing in ways
that would be confusing to the user. Now they act in a much more intuitive way
and also prevent negative media times.
2019-12-19 02:26:30 +11:00
itsmattkc
0d51f606df
corrected sequence to media time formulas
...
Previous iteration would multiply the media in by the speed as well. This is
undesirable.
2019-12-19 02:04:53 +11:00
itsmattkc
3fb7b40b61
fixed bug that would sometimes cause the track lengths to return 0
2019-12-19 01:43:10 +11:00
itsmattkc
37313bc212
only connect footage stream colorspace signal to video/image streams
2019-12-18 22:38:52 +11:00
itsmattkc
aae756b44c
fixed regression from moving length to a nodeparam
...
Splitting commands would run CopyInputs after set_length. Since length is now
a parameter (aka a NodeInput) the former would override the latter breaking the
implementation. This commit fixes that.
2019-12-18 01:20:04 +11:00
itsmattkc
f616a0d123
ported dip to black transition to external type and reimplemented drop shadow shader
2019-12-18 01:18:31 +11:00
itsmattkc
4e6da87585
ported crossdissolve to external shader
2019-12-17 15:58:16 +11:00
itsmattkc
6a4dcc673a
implemented external xml/shader loading for transitions as well as regular nodes
...
Transitions are nodes but have a few parameters that are programmatic and always
required. This lets people write external code for transitions as well.
2019-12-17 15:44:13 +11:00
itsmattkc
d4ee33405b
implemented speed/duration dialog and most of its functionality
...
An earlier commit implementing media in and out parameters was primarily for
this addition. A simple control dialog for the clip's speed presentation
reimplemented from the old codebase.
2019-12-17 03:58:12 +11:00
itsmattkc
4ba024e3ae
implemented media out value to allow speed changes in clips
2019-12-16 18:29:35 +11:00