Commit Graph
2317 Commits
Author SHA1 Message Date
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
itsmattkc 9131b32be4 small code cleanup in block class 2019-11-23 01:56:13 +09:00
itsmattkc bc9b7bc4f0 add mode for copying values only and not connections
Sometimes we'll be copying nodes without wanting to copy their connections,
since we'll want to connect them to equivalent copies rather than connecting
them to the same nodes the originals were connected to. We now have an extra
parameter to distinguish such operations.
2019-11-23 01:51:36 +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 2599c1e8a4 forego memory sample buffer and only write samples that need writing
Rather than writing the entire sequence audio to disk every change, now we
just write the parts we need to write.
2019-11-20 10:32:46 +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 8353b8d745 handle node providing less audio samples than expected for a given time
If the bytes retrieved is less than the bytes we expected for the time period
we're rendering, we fill the remainder with silence. Fixes segfault trying to
copy bytes that aren't actually allocated.
2019-11-19 22:25:04 +09:00
itsmattkc 073176a45d added function for returning a block at a time
Assists with certain timeline-related functions.
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 065fbc0428 return nullptr if a TrackReference references a track that doesn't exist
Fixes assert trying to access an array location that doesn't exist.
2019-11-19 22:24:23 +09:00
itsmattkc 54ecc01dbe clarified some fixme comments 2019-11-19 22:14:11 +09:00