Commit Graph
646 Commits
Author SHA1 Message Date
itsmattkc 97c192672e constructed keyframeview and timeruler together inside nodeparamview and connected them 2019-12-25 02:42:07 +11:00
itsmattkc d705a27d54 moved more functions to the base class in the vein of the previous commit 2019-12-25 02:41:40 +11:00
itsmattkc 4b48a73db3 moved some timelineview functions into a timelineviewbase for reusing
Later classes will feature similar functionality to the TimelineView, moving
them to a base class that can be easily reused seems like a good idea.
2019-12-25 02:20:23 +11:00
itsmattkc dc6d498da8 began UI for keyframing
Largely extending the existing NodeParamView with functionality from the
previous release.
2019-12-25 01:20:46 +11:00
itsmattkc aac8c5ec17 fixed speed changes on reversed clips in the speeddialog 2019-12-24 16:35:40 +11:00
itsmattkc ac9690c5a7 ensure gcc will compile this file without warnings 2019-12-24 16:35:28 +11:00
itsmattkc 62f9e55609 implemented foundational reversed block code
Ensured renderers can handle clips that are reversed.
2019-12-24 16:17:33 +11:00
itsmattkc f0cd480540 finished audio effects support in audio renderer
Working structure implemented in previous commit into the audio renderer is
complete in this commit.
2019-12-24 14:02:07 +11:00
itsmattkc 7ad2eae7a2 implemented volume and pan effects
This commit implements a structure for sample processing and two implemenations
of this structure in volume and pan effects.
2019-12-24 12:34:30 +11:00
itsmattkc 3a7b3ffac6 implemented audio exporting
The encoder was moved to its own thread and will transcode the PCM from the
audio renderer into the chosen codec while the video frames are still
received. The implementation isn't perfect and could use some cleaning up, but
it is functional at the moment.
2019-12-23 01:45:27 +11:00
itsmattkc a8beae64ae general improvements to the renderer backend to help keep rendering consistent and performant 2019-12-22 03:04:34 +11:00
itsmattkc 46855adea7 use a system of deferred maps to keep track of frames that don't need to be rendered twice
Mostly used for exporting to ensure all frames get accounted for when being
sent from the renderer to the exporter through signals/slots.
2019-12-22 03:03:08 +11:00
itsmattkc 8514590c83 implement transformation matrix in exporter backend
This was supposed to have been done, but was not.
2019-12-22 02:59:08 +11:00
itsmattkc 1e278b7b7e share videorenderingparams in exportdialog and include a frame rate for rendering 2019-12-22 02:58:36 +11:00
itsmattkc b24e2cd22b enable multithreading on ffmpegencoder 2019-12-22 02:56:25 +11:00
itsmattkc 4cb6659dbb cleaned up texture and texture reading classes 2019-12-21 21:30:42 +11:00
itsmattkc a8a5e50d3a update opengl exporter to pass encoderptr along to exporter base class 2019-12-21 20:40:09 +11:00
itsmattkc 04d39e27a8 copy texture before signalling it
Sending a texture directly from the texture cache is dangerous since once the
reference is relinquished, it could be picked up and used by another thread.
Copying the texture to a separate one takes a little extra time but lets the
viewer remain in control of that texture.
2019-12-21 20:38:15 +11:00
itsmattkc 57c0b93ba5 updated more classes for the moved decoder code a few commits back 2019-12-21 20:17:30 +11:00
itsmattkc 62d4603c76 allow access to the current frame rate from the ExportVideoTab to the ExportDialog 2019-12-21 20:14:52 +11:00
itsmattkc ea1cd81a13 implemented signals for the export window's view/look changing
These were implemented for the display combobox correctly but not for the
view/look comboboxes.
2019-12-21 20:13:46 +11:00
itsmattkc eaedd23c83 set up encoder when setting up the exporter 2019-12-21 20:13:22 +11:00
itsmattkc 355baa893a cleaned opengl texture and framebuffer code
Minor code changes and improvements.
2019-12-21 20:08:20 +11:00
itsmattkc 401de26733 updated other classes for the previous commit's file moving 2019-12-21 20:07:14 +11:00
itsmattkc f93c20819b fixed incorrect algorithm in pixel converter 2019-12-21 20:04:44 +11:00
itsmattkc ee31da9e71 merged encoder and decoder code into one folder since they can share quite a bit of code 2019-12-21 20:03:25 +11:00
itsmattkc 15e01c9452 update export dialog to use higher quality parameters
Since the backend parameters were hardcoded not too long ago, for testing the
parameters had to equal the backend parameters. Now that they are not hardcoded
we can use higher quality parameters in export contexts.
2019-12-20 04:41:26 +11:00
itsmattkc 1b844fb760 further progress on export dialog
Implemented setting up and running the export thread with valid parameters,
transformation matrix and color processor.
2019-12-20 04:39:11 +11:00
itsmattkc 38d35d1b88 updated viewer to set render backend format/mode
Yes, it's still hardcoded in the viewer for the time being, but moving it out
of the backend makes the backend format flexible for exporting.
2019-12-20 04:38:19 +11:00
itsmattkc 8ace197d66 improved backend encapsulation
Various backend improvements are included in this commit, mostly for the
benefit of exporting. These include:
- Moving more non-GL code from OpenGL derivatives into base classes
- An "export mode" that changes the cache behavior of video backends
- Using the Viewer's UUID introduced a few commits ago
- No longer hardcoding the pixel format/render mode in the backend (since
  they'll inevitably differ when exporting vs previewing)
- Improved signalling for frames that are completed
2019-12-20 04:35:31 +11:00
itsmattkc 757aaa21c4 began exporter classes for handling render backends in an exporting context 2019-12-20 04:34:32 +11:00
itsmattkc 7844a2ed72 fixed race condition in appending to a list of exported cache references 2019-12-20 04:33:05 +11:00
itsmattkc 7a7d304268 use uuid for identifying viewers
To aid generating a cache ID, each viewer node needs a UUID. Previous iterations
tried to hash a name and time, but a UUID is a much more efficient way to do
this.
2019-12-20 04:32:17 +11:00
itsmattkc 7398cd3f1c use viewer resolution/transform override to show cropping/stretching settings 2019-12-19 15:59:51 +11:00
itsmattkc 0ef00245ad added functions to override the resolution and matrix transform of the viewer widget
While in most circumstances these shouldn't be used, they're useful for
showing things like export previews
2019-12-19 15:55:08 +11:00
itsmattkc c5e16ed805 only show export dialog if the sequence is not empty 2019-12-19 15:53:56 +11:00
itsmattkc b308f753b3 with Block::set_length_and_* functions, keep the speeds correct
With differently set speeds, these functions would mess with the timing in ways
that would be confusing to the user. Now they act in a much more intuitive way
and also prevent negative media times.
2019-12-19 02:26:30 +11:00
itsmattkc 0d51f606df corrected sequence to media time formulas
Previous iteration would multiply the media in by the speed as well. This is
undesirable.
2019-12-19 02:04:53 +11:00
itsmattkc 93d95a0e14 removed legacy OLIVE_EFFECTS define in CMakeLists
These shaders are now embedded in the binary via resources.
2019-12-19 01:46:23 +11:00
itsmattkc 63086bc18d improved msvc warning compliance 2019-12-19 01:44:49 +11:00
itsmattkc 05e10962f9 added convenience undo command for removing a node and its exclusive deps 2019-12-19 01:44:18 +11:00
itsmattkc 3fb7b40b61 fixed bug that would sometimes cause the track lengths to return 0 2019-12-19 01:43:10 +11:00
itsmattkc 4214b061e1 improved MSVC compile flags in app's CMakeLists 2019-12-19 01:41:10 +11:00
itsmattkc 2c79edeb0f further improved msvc compilability 2019-12-18 23:35:02 +11:00
itsmattkc 37313bc212 only connect footage stream colorspace signal to video/image streams 2019-12-18 22:38:52 +11:00
itsmattkc d1ace48ff9 started audio speed stretching 2019-12-18 22:38:34 +11:00
itsmattkc 836192df48 fixed circular dependency that oddly only occurred on MSVC 2019-12-18 16:49:42 +11:00
itsmattkc 821f98f970 updated FindOpenColorIO
This likely isn't necessary, but was one of the steps made trying to debug
MSVC compilation. Considering the previous iteration was from 2012 and this
one is from 2019, it may have other improvements.
2019-12-18 16:48:03 +11:00
itsmattkc 66ab1b4a08 updated speed/duration dialog for new slider display modes
General UI improvement.
2019-12-18 02:13:11 +11:00
itsmattkc cde668b590 implemented percentage and decibel view modes for slider
A slider can now hold a float value and display it in the UI converted to
either a percentage or a decibel (still returning a linear float value
programmatically for the rest of the code).
2019-12-18 02:09:53 +11:00