Commit Graph
481 Commits
Author SHA1 Message Date
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 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 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 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 863525c595 remove functions that were moved to the timerange class 2019-11-17 12:31:02 +09:00
itsmattkc cd69bd76b9 use sequence parameters as audio output parameters 2019-11-15 20:11:17 +09:00
itsmattkc 40b3879440 overhauled render classes to support video AND audio
Major refactoring work to try sharing as much code as possible between the
video renderers and audio renderers, as well as make them as
platform-independent as possible.
2019-11-15 13:50:58 +09:00
itsmattkc 9a44e656b5 added simple wave classes
To assist the input/output of PCM data, we use the fairly straight-forward
WAVE format. These classes simplify the input and output of such data.
2019-11-15 13:49:40 +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 1206eb73b9 moved frame cache to external class that's easier to pass around 2019-11-06 23:46:44 +11: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 6de976c19f worked through new renderer worker annd split it off into gl and non-gl
specific code

The new rendering system is now starting to work as planned, however it is
still not as complete as the iteration before. But this should be a more
robust design moving forward. Work was also done towards splitting off all
OpenGL-specific worker code into a derived class. The hope is to have no
hard dependency on OpenGL and make swapping it out with other backends
straight-forward.
2019-11-05 03:39:56 +11:00
itsmattkc 6021852f18 moved decodercache to base folder for shared usage 2019-11-04 11:42:35 +11:00
itsmattkc 97a4294bb3 refactoring work to improve issues with new rendering pipeline 2019-11-04 11:34:43 +11:00
itsmattkc 663ae56ac4 more coherent render threading for now
Once again, conceptually this system should work, however it does not seem to
be the most efficient and it wouldn't surprise me if the multithreading was
eventually upgraded to an even more coherent system one day. However for
"core principles" this should be fairly decent.
2019-11-03 04:05:43 +11:00
itsmattkc 9c65cb854b rendering framework prototype largely complete
Most of the new concepts are down, but they're untested and bound to be full
of issues that need further design and bug squashing
2019-11-03 02:57:20 +11:00
itsmattkc 788502cd11 removed another unnecessary node function 2019-11-02 18:12:54 +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 f13fb648c7 attempt to merge separate processors into one
Previous iteration used probably an excessive amount of threads to make
everything work. New iteration intends to use precisely the amount of logical
threads available and using a moved QObject rather than a subclassed QThread
2019-10-31 23:27:20 +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 133dab1666 some code cleanup
Removal of translations around debug messages since these waste cycles and are
likely not useful
2019-10-31 21:45:53 +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 076f2699c5 implemented audio decoder and some of the audio node functionality 2019-10-24 21:33:46 +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 c38b4dca99 fixed viewport issues 2019-10-23 01:12:15 +11:00
itsmattkc 7dec79ceaa various changes to rendering flow and structure 2019-10-23 00:42:52 +11:00
itsmattkc 5f86b9b9c7 nodes are given a time range 2019-10-22 14:58:06 +11:00
itsmattkc 9da5e7c9be added sample retrieve function 2019-10-22 13:29:11 +11:00
itsmattkc f1e4e1c685 added samples type and duplicated video renderer 2019-10-22 13:22:30 +11:00
itsmattkc b3e6f8bbee connect length to viewer node for now 2019-10-20 21:47:46 +11:00
itsmattkc 9e7e2cc1a8 completed separation of video renderer 2019-10-20 00:02:14 +11:00
itsmattkc 5105568291 moved renderer files 2019-10-19 14:02:15 +11:00
itsmattkc d6483916ac base audio renderer classes created 2019-10-16 13:51:56 +11:00
itsmattkc 45bfad2b20 setting ocio config specific to project 2019-09-30 05:40:14 +10:00
itsmattkc d2dc0d2823 work on internal color management 2019-09-28 01:38:15 +10:00
itsmattkc 4c90405feb connect timeline and viewer together by default 2019-09-27 23:55:24 +10:00
itsmattkc c5572876fa fixed issues with some opengl implementations 2019-09-13 00:32:41 +10:00
itsmattkc 77bd1d07b3 cast use of sizeof 2019-09-12 03:50:06 +10:00
itsmattkc c26eee7df4 removed hardcoded OCIO config 2019-09-10 13:19:55 +10:00
itsmattkc 333d7392d9 use correct size with media node 2019-09-10 12:56:07 +10:00
itsmattkc df1f2c0d8b explicitly deleted some gl objects to try addressing memory leaks 2019-09-08 12:21:02 +10:00
itsmattkc e174618f34 fixed some uninitialized values 2019-09-08 12:20:16 +10:00
itsmattkc c2e59b0855 alpha over and opacity nodes are now functional 2019-09-06 15:45:12 +10:00
itsmattkc faa7f798ff more or less completed OIIO decoder 2019-09-05 01:15:50 +10:00