Commit Graph
2335 Commits
Author SHA1 Message Date
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 f424d8b44e rewrote renderers where necessary for new node structure
Largely conforming renderers to new NodeValue system. Code seems a lot cleaner
this way which is a nice advantage. Likely non-functional as this won't
compile just yet and still needs probably another day or two of testing to get
it back to where it was before.
2019-12-05 03:53:52 +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 bae448fc32 adjusted tracklist class for new node value structure
We use references to the node directly rather than references supplied by the
object. This should be more robust anyway and will fit better in the new node
structure.
2019-12-04 20:14:49 +11:00
itsmattkc 6e49eaef9e removed data storage from input/output parameters
These will be held in the renderer structure from now on, not in the nodes
themselves. The nodes will serve more as a blueprint.
2019-12-04 20:12:31 +11:00
itsmattkc 0ad003a7f6 added new nodevalue types to cmake 2019-12-04 20:11:55 +11:00
itsmattkc bc0f01d9a3 make nodes more const friendly and prepare their functions for stateless work
Since the nodes won't be holding any rendering data themselves in this system,
we may as well enforce some level of non-write access by setting all the
functions to const. They were already const-friendly, they just weren't
labelled as such.
2019-12-04 20:10:42 +11:00
itsmattkc cbf4d5b8c7 removed reference to deleted file in cmake 2019-12-03 13:07:03 +11:00
itsmattkc 6973919481 removed never used (and slow) qlist-related functions 2019-12-02 01:40:12 +11:00
itsmattkc 9aa50175ac use existing IsTrack() function for checking type instead of dynamic_cast 2019-12-02 01:39:45 +11:00
itsmattkc 7503542286 use existing IsBlock() function for checking type rather than dynamic_cast 2019-12-02 01:37:54 +11:00
itsmattkc 07cb0bc44a disconnect input signals when destroying
Fixes a "pure virtual method" crash. The inputs will try to send invalidate
cache signals through the node while it's being destroyed if these are left
connected. There's no purpose to sending invalidate cache signals since any
nodes affected by this one will automatically invalidate the cache from its
outputs being disconnected and the node being destroyed so this shouldn't
cause issues.
2019-12-02 01:32:16 +11:00
itsmattkc 49ba65917f removed decoder and frame from Media node
The Media node hasn't been responsible for decoding in quite some time so
these objects were pointless.
2019-12-02 00:44:55 +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 6314c80cbc deleted unused files
Old files that are never referenced or used anymore.
2019-12-02 00:16:08 +11:00
itsmattkc 24091f9810 explicitly destroy NodeParams in Node destructor
NodeParams used to be destroyed automatically through the QObject system, but
now that NodeParams perform actions that access the parent Node object in
their destructor, the NodeParam destructor needs to be called before the Node
has been fully destroyed. By destroying explicitly in the Node destructor we
accomplish this.
2019-12-02 00:14:33 +11:00
itsmattkc 87ac4dc357 Automatically disconnect all edges when a NodeParam is destroyed
If a NodeParam is destroyed (presumably as the result of its parent Node being
destroyed), any edge objects connecting to another param should be destroyed
or else the edge will be floating referencing a now destroyed object.
2019-12-02 00:12:45 +11:00
itsmattkc e3fdb96281 added convenience functions for working with NodeInputArray
NodeInputArray has to work a certain way internally, but it can still provide
array-like convenience functions to the rest of the program.
2019-12-02 00:11:45 +11:00
itsmattkc ef18980e7c removed connect/disconnect block functions that are unnecessary now 2019-12-01 01:38:52 +11:00
itsmattkc 8b1dab8296 moved track to take an array of blocks rather than a non-directed graph 2019-12-01 00:03:59 +11:00
itsmattkc da680094bf created NodeInputArray parameter type
It seems unwise to let NodeInputs take more than one value, but at times
it makes sense to create a list or array of inputs. This class will create
sub-parameters as an easy way to provide variable inputs while also enforcing
one connection per input parameter.

This is also the primary motivation for the previous commit (disambiguating
when a NodeParam's parent is a Node vs some other type).
2019-12-01 00:01:25 +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 a478b11fd0 removed "previous_input" param from block
It was becoming inevitable to get rid of this, it was continuously an exception
that had to be made to the DAG concept seeing as blocks are never really
"dependents" on each other, i.e. the images they produce have nothing to do
with other blocks. The only exception is a transition which will also be
easier to accomplish with this slightly different design.
2019-11-30 23:24:01 +11:00
itsmattkc 7c5b50c5e7 fixed gross misusage of sampler2D
This particular compile issue should be solved, however the majority of its
function remains untested for the time being.
2019-11-30 18:29:46 +11:00
itsmattkc b9477f6695 use travis yaml to install brew packages rather than installing manually
This is actually the recommended way of installing packages in Travis rather
than installing them manually in the build script. This helps get around being
caught by Ruby version issues (which we have recently).

See the following link for more information:
https://docs.travis-ci.com/user/installing-dependencies/#using-homebrew-without-addon-on-older-macos-images
2019-11-30 18:17:52 +11:00
itsmattkc 8866428589 removed unnecessary debug line in ffmpegdecoder 2019-11-30 02:54:49 +11:00
itsmattkc 1a54d18862 wrote sample rate conform code into ffmpegdecoder
Audio no longer needs to be the same format/sample rate to play correctly. This
should be the last step to making audio work correctly (minus several
optimizations still yet to be done).
2019-11-30 02:52:31 +11:00
itsmattkc 87394f0c2a conformed renderworkers to new decoder retrieval functions 2019-11-30 02:52:11 +11:00
itsmattkc 2b273e44c5 made audiorenderingparams == operators const
There's no reason these functions shouldn't be const and we need to access it
in situations where instances of this class are const.
2019-11-30 02:50:50 +11:00
itsmattkc c19cf8f8e6 fixed issue in waveinput where the format would be detected incorrectly
Floating point detection was backwards causing float-based audio to be
detected as integer and vice versa (for >32-bit formats)
2019-11-30 02:49:19 +11:00
itsmattkc e5e68c8947 added parameter access to waveoutput class 2019-11-30 02:48:54 +11:00
itsmattkc a71c03b1ed conformed oiiodecoder to new retrieve functions 2019-11-30 02:48:14 +11:00
itsmattkc 1a9ae53181 separated decoder retrieve functions for video and audio
It became increasingly clear that video and audio retrieval require different
parameters so it started to make sense to separate these functions out.
2019-11-30 02:46:49 +11:00
itsmattkc 25c3652ae3 removed old files that haven't been used for months 2019-11-30 02:46:18 +11:00
itsmattkc eb970fc293 replaced assert(false) calls with abort() 2019-11-30 02:45:47 +11:00
itsmattkc 16f4ec8468 began audio conform code in ffmpegdecoder
For accuracy, whenever we need to perform an audio resample, we need to do it
in advance. This is in a process called "conforming" and this commit introduces
the framework by which the decoder can automatically conform an audio stream
to arbitrary parameters for accurate rendering.
2019-11-29 02:10:28 +11:00
itsmattkc 755b4233ff fixed bug where a timecode of 0 wouldn't always return the first frame
Not all media starts with a timecode of 0 and the Decoder class needs to
handle such a situation. This commit corrects that.
2019-11-29 01:35:53 +11:00
itsmattkc 45d17810d5 removed old legacy code from openglbackend (had already been commented out) 2019-11-27 09:52:20 +10:00
itsmattkc 955fac1fbb improved documentation note on audiorenderbackend 2019-11-27 09:51:06 +10:00
itsmattkc 2889811b7b improved documentation on DISABLE_COPY_MOVE macros 2019-11-27 09:50:30 +10:00
itsmattkc 25266f0bcd remove unnecessary opencl link
We're not using OpenCL for anything at the moment
2019-11-24 15:05:53 +09:00
itsmattkc d5b1768d70 reimplement Q_DISABLE_COPY_MOVE for full compatibility with versions < 5.13
I was under the impression Q_DISABLE_COPY_MOVE was a much older function than
it is. Since we historically target 5.6 and these functions are small
convenience functions, I just implemented them in the actual codebase.
2019-11-24 14:57:57 +09:00
itsmattkc ba191399ff add qtglobal header to decoder class
This may be required for resolving Qt functions in some situations.
2019-11-24 14:39:32 +09:00
itsmattkc 1d5d7bcc24 use alias namespace instead of direct ocio namespace in colormanager
Minor code improvement
2019-11-24 02:06:59 +09: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 289cb889ef removed declaration of function removed in previous commit 2019-11-24 02:05:44 +09:00
itsmattkc db739b7fbb removed unused function from renderworker
Code cleanup.
2019-11-24 02:05:07 +09:00
itsmattkc 59f658f73a removed old retrieve code from ffmpegdecoder
Code cleanup
2019-11-24 02:04:37 +09:00
itsmattkc 9a05e2e848 fixed bug where non-video/audio types would show a "duration" as their "rate" 2019-11-24 02:03:55 +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