Commit Graph
2328 Commits
Author SHA1 Message Date
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
itsmattkc 6a27161e96 set params on workers when a backend's params change
Previous iteration had params attached to the backend and the params couldn't
change without being destroyed and re-instantiated. This is not necessary in
this iteration so doing so only wastes resources.
2019-11-23 22:28:06 +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 1bc8a20425 never send signals while nodes are still locked
A signal emitted and received in the same thread will call other functions
before returning to the one that emitted the signal. If these other functions
try to lock a mutex while a mutex is already locked by the emitting function,
we get stuck in a deadlock. These changes ensure that a signal is never emitted
by any function until all the nodes locked by it are unlocked.
2019-11-23 17:04:33 +09:00
itsmattkc cb5d816145 removed extraneous debug line in audiohybrid device
Code cleanup.
2019-11-23 17:03:37 +09:00
itsmattkc 2cfccbfbef copy node graph before rendering
Previous iterations would use mutexes to prevent changing of the graph
mid-render, however several user actions would need to capture these mutexes
causing the main thread to hang until the current render job (frame/range of
samples) was complete. We now copy the nodes necessary as part of the "compile"
process so that the main thread shouldn't need nearly as much blocking while
caching occurs.
2019-11-23 08:53:52 +09:00
itsmattkc b233aa5319 added signal for an edge changing that can ripple through the graph
Useful for detecting when a graph needs recompiling, in tandem with the
"InvalidateCache()" signal when necessary, this signal ripples through the
nodes when any of the connections change which will likely need handling by
the renderer.
2019-11-23 08:51:15 +09:00
itsmattkc b1535b73b7 implemented clear() function for nodegraphs
Added a convenient (destructive) way of emptying a NodeGraph completely.
2019-11-23 08:48:59 +09:00