Commit Graph
2297 Commits
Author SHA1 Message Date
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
itsmattkc 51c95cc48f ensure audio output is always closed when it's no longer needed 2019-11-19 11:09:21 +09:00
itsmattkc db9f188733 reimplemented infrastructure for autorecovery projects
Foundation for a fairly simple but likely essential autorecovery process.
Basically the same as what it was in 0.1.x but with a huge improvement: custom
autorecovery intervals. Ironically there isn't any "saving" to be done
just yet, but when there is, this infrastructure will be ready for it.
2019-11-18 13:47:42 +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 8e6c23ffc1 fixed bug that caused some frames to never render indefinitely
Frames should no longer get stuck unrendered.
2019-11-17 17:14:08 +09:00
itsmattkc 2752a0a005 made output param cache thread safe
Multiple threads could be accessing these values at any given time, they'll
need to be thread safe.
2019-11-17 17:11:40 +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 51439c2992 removed extraneous debug line 2019-11-17 13:49:23 +09:00
itsmattkc 2f8675f5f9 cleaned up opengl backend
Removed some legacy code (that had been all commented out by now anyway)
2019-11-17 13:48:36 +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 9d154e1909 use different signals when the audio invalidates vs the video
Both audio and video renderers were working off the same invalidation signal
(i.e. changing audio would also trigger a re-render of the video). This is
obviously suboptimal and now they are separate.
2019-11-17 13:44:50 +09:00
itsmattkc b1f4bf3dbb delete mediaindex folder on close
Since we're storing media frames too with no disk space management
at the moment, we'll remove the mediaindex folder too on close
just for this testing period
2019-11-17 12:32:01 +09:00
itsmattkc 35802d37b0 ensure invalidated values are removed
When a node receives an InvalidateCache signal, it will
automatically signal its outputs to discard any cached values in
the invalidated time range
2019-11-17 12:31:10 +09:00
itsmattkc 863525c595 remove functions that were moved to the timerange class 2019-11-17 12:31:02 +09:00
itsmattkc 60a27961c2 cache frames alongside the frame index
Decoder will now pre-render/decode frames in advance of needing
them
2019-11-17 12:29:53 +09:00
itsmattkc c6d5fbae8c moved timerange functions to timerange class 2019-11-17 12:29:09 +09:00
itsmattkc cd69bd76b9 use sequence parameters as audio output parameters 2019-11-15 20:11:17 +09:00
itsmattkc 0081511f18 Merge branch 'master' of https://github.com/olive-editor/olive 2019-11-15 14:00:06 +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 16f80386e8 added qhash functions for timerange and rational
So these keys can be used in QHash containers, they need functions for how to
create those hashes.
2019-11-15 13:55:05 +09:00