Commit Graph
826 Commits
Author SHA1 Message Date
itsmattkc f2013a6f3d created time slider UI widget
Based on the integer slider, this can be used to interactively control time.
2019-12-08 00:11:47 +11:00
itsmattkc 0c6ec926b6 started base transition type
Like the base "Block" type, the "Transition" type will not be a node used on its
own, it will have to be derived. This type defines some basic behavior for a
transition (e.g. how much it overlaps its "from" and "to" blocks).
2019-12-07 02:49:30 +11:00
itsmattkc f6064b40df hold worker busy state in renderbackend rather than in renderworker
Workers run in different threads and the backends can poll whether the worker
is currently busy or not. However the previous iteration has the worker (and an
atomic int) provide the busy state which could easily desync with the main
thread (since all workers run in different threads). By holding the busy states
in the main thread, the main thread will always be able to poll the busy state
accurately.
2019-12-06 19:38:57 +11:00
itsmattkc d25dda5275 removed all dependence on NodeOutputs
If Nodes only have the one output, we don't need to do so much differentiation
between them. Previous iteration used outputs as like a distinct function
within a Node (e.g. length output would return one result, buffer output would
produce a different result - each run different code to produce their results).
Now in this iteration, it's more accurate to say a Node is just one function
(which seems more appropriate for a node system anyway).
2019-12-06 00:23:26 +11:00
itsmattkc 88c3bd44a5 rewrote node data types as or flags
The data types can now be or'd to match broader data types.
2019-12-04 20:26:43 +11:00
itsmattkc 79ee3bc3df implemented new block system
Fixes recurring design issue that the Blocks were a frequent exception to the
DAG concept. The Blocks connecting to each others inputs/outputs while not
necessarily being "dependent" on each other to produce an image continually
causes issues while trying to create a rendering code path. This redesign
should provide a more "directed" approach to the directed acyclic graph.
2019-12-02 00:37:03 +11:00
itsmattkc 092d76f41a disambiguated whether NodeParam::parent() would return a Node* or a QObject*
Old code assumes that a NodeParam's parent will always be a Node. The function
has been separated off and tweaked in the event that this is not the case.
2019-11-30 23:58:56 +11:00
itsmattkc eb970fc293 replaced assert(false) calls with abort() 2019-11-30 02:45:47 +11:00
itsmattkc 6899c5e530 fixed bug where image types would not have videoinput nodes created
Fixes issue where still images would render completely blank.
2019-11-24 02:06:09 +09:00
itsmattkc 43d6ac75e2 updated disconnect code in timelinewidget
Connect code was updated as TimelineOutput changed but it appears the
disconnect code was not. It should now match as expected.
2019-11-23 22:39:24 +09:00
itsmattkc 44d649903c copy values whenever the cache is invalidated
Since we're now working with a separate proxy copy of the original node graph,
if the user changes a parameter in one of those nodes (triggering an
InvalidateCache signal), the values in our copied graph need to be updated
with these new values too.
2019-11-23 17:06:49 +09:00
itsmattkc 492c8f474a added clone functions for nodes
Since nodes are are extremely derivative types, we use a clone/copy function
to produce new types of the derived class easily.
2019-11-22 16:53:30 +09:00
itsmattkc 6693fc75a3 fixed obviously wrong function
This function was written incorrectly and would almost always trigger an
infinite loop. It's now written correctly and achieves what's intended.
2019-11-19 22:25:04 +09:00
itsmattkc 84f77cd58d null-check track before splitting
Fixes access violation if the user tries to split a track that doesn't exist.
2019-11-19 22:25:04 +09:00
itsmattkc 8d599b60e4 reimplemented split at playhead functionality
Reimplemented an older but very useful timeline function for splitting blocks
at the current playhead.
2019-11-19 22:25:04 +09:00
itsmattkc 7385e3dc56 fixes jitters by using signals/slots to pass image buffers around
Updating values rapidly would cause strange jitters as a
byproduct of the viewer trying to update from the renderer while
it was still working. Rather than the viewer trying to access the
the renderer, we now send textures in the initial update signal
to keep everything synchronized.
2019-11-18 02:14:54 +09:00
itsmattkc 833d1f7d94 fixed bug where slider widget would signal that it had changed twice
When typing a slider value, it would always signal that it had changed twice.
This is obviously unnecessary and is fixed in this commit.
2019-11-17 13:49:40 +09:00
itsmattkc 823e820bfa update length value from signals/slots
I was looking for a way to update the length value automatically with signals
and slots (rather than just checking every time the viewer time changes). This
should do the trick.
2019-11-17 13:46:14 +09:00
itsmattkc cd69bd76b9 use sequence parameters as audio output parameters 2019-11-15 20:11:17 +09:00
itsmattkc a9660201f1 miscellaneous other changes to make audio rendering work
Many changes were made throughout the codebase to support audio, these are
most of the small changes necessary.

The audio support still is not perfect. I still need to write in resampling
support. After that it should work correctly with all audio types.
2019-11-15 13:57:49 +09:00
itsmattkc 0a68b2a1c3 make viewer work with new audio renderer setup
Previously, the viewer could be set up with a custom PCM file to test playback
and scrubbing. Now these functions are connected to the audio renderer to
work within the render system.
2019-11-15 13:56:14 +09:00
itsmattkc 7a6dd02e5b furthered development of audio renderers
Mostly reimplementing functions from other workers to produce audio samples
2019-11-11 11:35:01 +09:00
itsmattkc 3b224c7638 multithreaded download and files that probably should have been in the last
commit

For testing the new iteration, the texture cache disk download was written
into the main thread instead of into the separate threads. Now they're back
in separate threads again.

Also I think some of these files probably should have been in the previous
commit.
2019-11-06 09:14:20 +11:00
itsmattkc 16ac2fc0e1 sweeping node graph changes for new rendering pipeline
The new rendering pipeline strives to simplify the nodes themselves as much
as possible and move much of the logic to an external rendering engine. This
change removes all of the responsibilities that no longer belong to the
nodes themselves and will soon be folded into the renderer.
2019-11-02 01:39:37 +11:00
itsmattkc c14125e640 work towards rewriting the render infrastructure
Mostly foundational work and re-implementing older code in a smarter way
(i.e. context creation code should be slightly faster than it was before)
2019-11-01 22:58:02 +11:00
itsmattkc 429514b1fd separation of previous renderer into base and derivation complete
The previous iteration was fairly OpenGL-heavy. It's now been separated into
a base class that is OpenGL independent and a derived class that is
OpenGL-based. Over time this should allow for portability away from OpenGL
if necessary.
2019-11-01 12:58:38 +11:00
itsmattkc b56fbaae51 began port of previous renderer iteration to new iteration
This will essentially be a full rewrite, but very incrementally to save time
and energy.
2019-10-31 21:59:20 +11:00
itsmattkc e03e0007e4 adjusted viewer widget 2019-10-31 20:11:08 +11:00
itsmattkc 55f7d6aa8a restored previous renderer iteration for porting 2019-10-31 20:06:11 +11:00
itsmattkc 77bcb70dac started porting renderer to new portable form 2019-10-31 19:14:58 +11:00
itsmattkc 401aff52a8 attempts at folding opencl support in 2019-10-28 18:21:20 +11:00
itsmattkc 4d96ac9e39 don't police data type connections between nodes
Nodes were previously written to be "strongly typed" in that a parameter's
"type" enforced whether it could be connected to another. All code related
to that has now been removed since not only is it hard to maintain and
likely unnecessary, it's possible the nodes will work differently later on
anyway.
2019-10-25 00:44:14 +11:00
itsmattkc af702835da forked MediaInput into two derived classes for video and audio
Rather than convoluting the MediaInput node, te MediaInput is now an abstract
base class that provides access to a Decoder and derived classes are
responsible for handling it
2019-10-24 17:03:33 +11:00
itsmattkc 2fdf78df4a implemented preliminary pre-cacher for audio
FFmpegDecoder now implements an "indexer" for audio, which actually just
extracts the raw PCM audio from an audio codec and saves it to disk
2019-10-24 16:36:26 +11:00
itsmattkc 52f4c59bec implemented new audio monitor widget 2019-10-23 03:21:05 +11:00
itsmattkc 9b6028430f fixed segfault when right clicking empty space in project explorer 2019-10-23 00:47:41 +11:00
itsmattkc 7dec79ceaa various changes to rendering flow and structure 2019-10-23 00:42:52 +11:00
itsmattkc f1e4e1c685 added samples type and duplicated video renderer 2019-10-22 13:22:30 +11:00
itsmattkc 9e7e2cc1a8 completed separation of video renderer 2019-10-20 00:02:14 +11:00
itsmattkc 66b715f6ca limit underline to rect width 2019-10-19 10:42:08 +11:00
itsmattkc 09b3a1970d underline clips that are linked 2019-10-17 11:07:36 +11:00
itsmattkc 276478c6d0 created function that splits and preserves links 2019-10-17 10:51:50 +11:00
itsmattkc 259b5d530a improved audio pausing feedback 2019-10-17 09:43:38 +11:00
itsmattkc 14fa181951 fixed compile issues on some widgets 2019-10-16 23:06:58 +11:00
itsmattkc 39af57445c removed hardcoded audio test file (replaced with env) 2019-10-16 22:42:04 +11:00
itsmattkc f92c236f54 timeline selection behavior for links implemented 2019-10-16 22:35:07 +11:00
itsmattkc fe2b0f2dc2 implemented base audio playback and scrubbing 2019-10-14 11:38:29 +11:00
itsmattkc b942300aea setup test parameters 2019-10-14 08:42:03 +11:00
itsmattkc b09fc2b697 reimplemented rubberband and hand drag routines 2019-10-14 07:28:27 +11:00
itsmattkc 6f4e5a04e4 reimplemented pointer default functionality 2019-10-12 06:37:53 +11:00