Commit Graph
621 Commits
Author SHA1 Message Date
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