itsmattkc
61c60e00d6
various small code cleanups and improvements
...
Largely refactoring work to make the code somewhat nicer to work with.
2019-12-26 19:00:08 +11:00
itsmattkc
83077c939e
removed olive:: qualifier from MainWindow class
2019-12-26 17:41:31 +11:00
itsmattkc
7d907d7ee1
removed olive:: qualifier from icon:: namespace
2019-12-26 17:38:18 +11:00
itsmattkc
bb9284a894
moved tool enum to a Tool class
...
Code cleanup and improvement.
2019-12-26 17:35:25 +11:00
itsmattkc
d140094cf5
moved PanelManager to a more traditional singleton form
2019-12-26 17:27:30 +11:00
itsmattkc
520b8b46fa
place timecode conversion functions into a Timecode class rather than an olive namespace
...
Code cleanup and improvement.
2019-12-26 17:20:58 +11:00
itsmattkc
3b2fcf4aae
re-implement value setting for all other types than float in NodeParamViewWidgetBridge
...
Just updating code
2019-12-26 17:20:30 +11:00
itsmattkc
23001386d0
implemented base UI keyframe functionality
...
This commit implements much of the base functionality for creating and
destroying keyframes in the UI. Not complete yet, but getting there.
2019-12-26 16:32:08 +11:00
itsmattkc
a514265fc9
updated NodeKeyframe class to QObject for easier signal/slot handling
...
While the keyframes themselves are relatively simple, their usage is quite
complex and using QObjects as their base will help a ton of UI and backend
functionality.
2019-12-26 16:30:25 +11:00
itsmattkc
c62b59965e
updated nodes for new input structure
...
Since all NodeInputs will generally only need their data type and default
value set once, we place it all into the constructor for cleaner and easier
to manage code.
2019-12-26 16:29:56 +11:00
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
itsmattkc
be0d857e38
snap footage imports to the timeline timebase
...
Earlier, footage that was not the same frame rate as the sequence had the chance
of their length value falling between a frame. This doesn't really help anything
with video since a frame is a discrete point in time, and only led to confusion
while navigating the timeline.
2019-12-18 01:21:25 +11:00
itsmattkc
aae756b44c
fixed regression from moving length to a nodeparam
...
Splitting commands would run CopyInputs after set_length. Since length is now
a parameter (aka a NodeInput) the former would override the latter breaking the
implementation. This commit fixes that.
2019-12-18 01:20:04 +11:00
itsmattkc
29ae366659
improved speed/duration implementation
...
This functionality is almost complete minus the reverse speed and any of the
audio implementation.
2019-12-18 01:19:17 +11:00
itsmattkc
f616a0d123
ported dip to black transition to external type and reimplemented drop shadow shader
2019-12-18 01:18:31 +11:00
itsmattkc
4e6da87585
ported crossdissolve to external shader
2019-12-17 15:58:16 +11:00
itsmattkc
6a4dcc673a
implemented external xml/shader loading for transitions as well as regular nodes
...
Transitions are nodes but have a few parameters that are programmatic and always
required. This lets people write external code for transitions as well.
2019-12-17 15:44:13 +11:00
itsmattkc
a0b6bb842d
ColorManager is now specific to the Project
...
OCIO config was set on a per-project basis, but we were using a singleton for
the ColorManager that would break if more than one project was ever open.
Now the ColorManager belongs to the Project and is always accessed through the
Project.
2019-12-17 15:18:07 +11:00
itsmattkc
e1b8fd6352
fixed issue (qt bug?) where video streams wouldn't receive ColorManager::ConfigChanged signal
2019-12-17 14:11:13 +11:00
itsmattkc
d4ee33405b
implemented speed/duration dialog and most of its functionality
...
An earlier commit implementing media in and out parameters was primarily for
this addition. A simple control dialog for the clip's speed presentation
reimplemented from the old codebase.
2019-12-17 03:58:12 +11:00
itsmattkc
4ba024e3ae
implemented media out value to allow speed changes in clips
2019-12-16 18:29:35 +11:00
itsmattkc
8945fbe5fe
began base encoder type for abstracting around exporting
...
Essentially the same principle as Decoders but somewhat different functionality.
2019-12-16 18:04:30 +11:00
itsmattkc
23159025a4
ensure playback controls always shows a time when a timebase is set
...
Previously the playback controls would only appear after the first time they
updated. Now they're shown as soon as the viewer is set to a node.
2019-12-16 18:03:18 +11:00
itsmattkc
cb5a468b4a
implemented color management UI functionality in the ExportDialog
...
Frontend UI work in setting up color management when exporting.
2019-12-16 16:47:36 +11:00
itsmattkc
377e2316be
completed color management implementation
...
This commit adds the background functionality of the render cache invalidating
whenever a footage's color space is changed. This includes when the project's
configuration is changed as well.
2019-12-16 16:46:15 +11:00
itsmattkc
baab21a3ab
added option to disable color management menu on viewer
...
While the Viewer is _always_ color managed, In some contexts, the color
management may be controlled from an external UI making the menu unnecessary.
2019-12-16 16:43:27 +11:00
itsmattkc
1fd62948e8
completely implementation of color management in viewer
...
The viewer had the color management backend in place already, but the frontend
was non-functional. This commit implements most if not all color management
functionality.
2019-12-16 13:41:35 +11:00
itsmattkc
4bd8c0c850
filled out various further UI functions for the export dialog
2019-12-16 03:03:40 +11:00
itsmattkc
abf579cb84
moved supported channel layout functions to the core for wider use
2019-12-16 03:03:06 +11:00
itsmattkc
b96fd7ae45
allowed access to the viewer node from the viewer widgets
2019-12-16 03:02:28 +11:00
itsmattkc
4ddeadaf46
fixed regression in slider
...
The recent slider focus addition caused the label to re-focus if the user
pressed enter in the line edit, causing the line edit to never disappear.
2019-12-16 03:00:26 +11:00
itsmattkc
3f79845464
implemented export dialog functionality and some base formats/codecs to support
2019-12-16 01:21:30 +11:00
itsmattkc
d6d8409bb9
allow sliders to be tabbed to
2019-12-15 20:03:02 +11:00
itsmattkc
4630975e43
implemented browse dialog in export dialog
2019-12-15 20:00:00 +11:00
itsmattkc
83cf67fe7b
implemented majority of export dialog widget layout
2019-12-15 19:56:12 +11:00
itsmattkc
eb7c63bace
started export dialog
2019-12-15 13:44:16 +11:00
itsmattkc
a977020833
implemented the ability to make inputs that can't be connected
2019-12-15 04:15:09 +11:00
itsmattkc
f3acc369ff
fixed boolean data types on the NodeParamViewWidgetBridge
2019-12-15 03:52:21 +11:00
itsmattkc
46b3f9db48
moved alphaover to external file format
2019-12-15 03:41:37 +11:00
itsmattkc
ae7c9597e2
ported solid color generator to external shader
2019-12-15 03:07:10 +11:00
itsmattkc
61bb9fec6f
added language support for externally loaded shaders
...
This includes adding a language entry to the config file.
2019-12-15 03:01:05 +11:00
itsmattkc
965519e9cf
ported opacity node to external file format
...
The plan is to port all nodes that can be external to the external file format.
This should help keep things maintainable.
2019-12-15 02:51:28 +11:00
itsmattkc
845a197c99
enable tooltips in the node menu to allow node descriptions to appear
2019-12-15 02:39:55 +11:00
itsmattkc
fdd7474a99
fixed bugs in the blur shaders
2019-12-15 02:38:55 +11:00
itsmattkc
4297cd92d6
fixed issue with accelerated node iterations
...
Uniform values cannot be set if the shader is not bound, and calling Blit would
release the shader making subsequent iteration count updates not work. This
commit makes sure the shader is bound before trying to do so.
2019-12-15 02:37:38 +11:00
itsmattkc
2067408273
use GL_CLAMP_TO_EDGE instead of GL_CLAMP_TO_BORDER
...
Ultimately it would be nice if nodes could configure this themselves, but
CLAMP_TO_BORDER behavior can be written manually into the shader if that
behavior is desired, whereas CLAMP_TO_EDGE cannot.
2019-12-15 02:36:31 +11:00
itsmattkc
7d910e8a4f
added function to convert a string to a data type
...
Used for external node XML parsing.
2019-12-15 02:36:15 +11:00
itsmattkc
ce8c77754d
add embedded external shaders to the node factory
2019-12-15 02:34:47 +11:00
itsmattkc
5b85303b2b
named the clip/block parameters added a few commits ago
2019-12-15 02:34:13 +11:00
itsmattkc
be3ff4bcea
added ExternalNode class to CMakeLists
2019-12-15 02:33:08 +11:00
itsmattkc
b276df2940
implemented node derivative that loads all metadata/code from an external file
...
Implemented the ability to load a node externally. This XML data could also
eventually be copy/pasted between instances of Olive alongside XML data for
other nodes and their connections to allow copying entire node trees.
2019-12-15 02:31:48 +11:00