Commit Graph
100 Commits
Author SHA1 Message Date
itsmattkc d74d6a1542 nodes: implementing saving/loading node positions from project file 2020-04-28 03:43:35 +10:00
itsmattkc 3c01b14a14 palette: fixed disabled text color 2020-04-28 03:32:50 +10:00
itsmattkc b57d12868f nodeview: allow dropping a node on any edge
Before we checked data types to ensure compatibility, but some nodes (e.g. the
math node) may be compatible despite a not apparently compatible data type.
We allow users to make any connection quickly this way.
2020-04-28 03:20:08 +10:00
itsmattkc 0faf682225 core: fixed bug that didn't register ProjectPtr correctly and broke some
functionality as a result
2020-04-28 02:47:28 +10:00
itsmattkc e154b5d5d4 nodeview: make auto-position a manual and specific function, allow different flow directions
The first in many NodeView improvements. Up until now, nodes have been forcibly
auto-arranged, which has worked as a reasonable stop-gap just so that all the
nodes are visible during testing/development. However this does not make a good
user experience.

We move the auto-arrange code to a manual function that can be used when the
user or program deems it necessary, and also abstract the node positions so that
the view can ultimately determine the exact amount of spacing (useful for
changing DPIs) or orientation, so users can direct the flow whichever way they
want.
2020-04-28 00:28:38 +10:00
itsmattkc 3e28c74d20 projectpanel: connected open/save/undo/redo buttons
These were waiting until opening/saving projects was implemented, which it was
about a month ago. Now they are connected.
2020-04-28 00:24:37 +10:00
itsmattkc b947b2224a nodeview: support multiple flow directions 2020-04-27 16:08:48 +10:00
itsmattkc 690bdb6581 timeline: make sure track length is updated if a block is disconnected 2020-04-27 14:01:44 +10:00
itsmattkc ac3f49a845 nodes: moved matrix input on "video input" elsewhere
Rather than plugging a matrix into the video input node, the matrix is now
multiplied by the video input using a math node. This is probably more
sensible from a user perspective.

This also means the renderer is tolerant of texture sizes that are not equal
to the sequence size, however most nodes will downsample the texture to the
sequence size (and if not, it will be downsampled once it is cached). Textures
will still *always* be in reference space and the sequence's format. This seems
like the best compromise between backend and frontend congruity.
2020-04-27 04:11:24 +10:00
itsmattkc f61321d68b nodes/timeline: correctly detect when tracks are removed from the graph
Fixes several segfaults that could result from this occurring.
2020-04-27 01:01:12 +10:00
itsmattkc 981860b60b fixed audio regression introduced with optimized node copy 2020-04-27 00:55:40 +10:00
itsmattkc 9c4999cfae curvepanel: reconfigured to be a spawnable child of NodeParamView 2020-04-27 00:04:07 +10:00
itsmattkc 53ae25a7cb nodes: optimize node graph changes by only updating from inputs that changed
A huge optimization that ensures only the parts of a node graph that have
changed get pushed to the renderer. For thread-safety, the node graph is
copied elsewhere so that users can make changes asynchronously and the graph
can update when its threads are ready. Up until now, if an input value changed,
every node's values would be re-copied, or worse, if a connection was changed,
the entire graph would be recopied. This has been negligible in testing since
we've been largely testing with small graphs, but for massive projects, it's
important that this be as optimized as possible.
2020-04-26 04:16:15 +10:00
itsmattkc 17999eab7a timelineview: removed "end item"
This was written as a hack to force our QGraphicsScenes to larger sizes. Turns
out it was completely unnecessary and can be done better.
2020-04-25 15:19:46 +10:00
itsmattkc acef99eb17 renamed viewerglwidget to viewerdisplaywidget
Initially this class was named to provide the possibility of supporting other
APIs, however this abstraction has been done with a base class instead.
2020-04-25 14:46:30 +10:00
itsmattkc c7de93cc5d viewer/opengl: minor code improvements 2020-04-24 15:14:20 +10:00
itsmattkc 8c44f8d03d viewer/various: split off color management into separate base class
Also moves scopes to said base class.
2020-04-24 03:45:07 +10:00
itsmattkc 3eb966cb5b openglshader: fixed ocio opengl incompatibility 2020-04-24 00:19:25 +10:00
itsmattkc 7768925826 manageddisplay: started base class for widgets that are managed 2020-04-24 00:17:32 +10:00
itsmattkc c4fe5786a3 openglshader: fixed ocio opengl incompatibility 2020-04-23 23:43:29 +10:00
itsmattkc d3e7678c13 Merge branch 'master' into Simran-B-glsl-150 2020-04-23 23:31:21 +10:00
itsmattkc 1bad7e9b11 waveformscope: pass viewport in as uniform 2020-04-23 23:28:57 +10:00
itsmattkc 8d66989de3 Merge branch 'glsl-150' of https://github.com/Simran-B/olive into Simran-B-glsl-150 2020-04-23 22:37:39 +10:00
itsmattkc 48b5d9ca60 openglshader: upload ocio lut immediately 2020-04-23 22:36:05 +10:00
itsmattkc 6940b00164 colormanager: added wrappers for GetDefaultLumaCoefs 2020-04-23 21:39:21 +10:00
itsmattkc 9e04728c12 openglshader: minor code tidiness 2020-04-23 21:20:51 +10:00
itsmattkc ac09f604b1 Merge branch 'master' of https://github.com/olive-editor/olive 2020-04-23 21:14:07 +10:00
itsmattkc 1436d9b3eb ffmpegdecoder: potential fix for deadlocks when closing 2020-04-23 21:13:43 +10:00
itsmattkc 1f34b89950 viewer: removed unnecessary debug line 2020-04-23 18:06:49 +10:00
itsmattkc 4490b10032 oiiodecoder: fixed broken reference 2020-04-23 03:58:38 +10:00
itsmattkc c41b43ea06 nodeview: don't try to delete nodes marked as undeletable 2020-04-23 03:09:38 +10:00
itsmattkc 61e3641bcc export: fixed bug where null frames never got signalled and hung exporting 2020-04-23 03:02:04 +10:00
itsmattkc 8f9c056419 colorspacechooser: fixed incorrect title function call 2020-04-23 02:23:41 +10:00
itsmattkc 9beff8b1e8 ffmpegdecoder: fixed deadlock if decoder instance was closed from main thread 2020-04-23 02:23:20 +10:00
itsmattkc fef29db754 export: fixed bug that failed to export video if using a different export resolution 2020-04-23 02:00:49 +10:00
itsmattkc a1ec48b978 clitaskdialog: updated comment describing its status 2020-04-23 02:00:29 +10:00
itsmattkc 5c736114d0 merged some export improvements from another branch 2020-04-23 01:31:50 +10:00
itsmattkc 2b1363d434 colorspacechooser: fixed segfault that occurred sometimes if DVL was disabled 2020-04-23 01:23:08 +10:00
itsmattkc 6c1e90665f colormanagement: moved from passing DVL strings everywhere to a consolidated ColorTransform struct 2020-04-23 01:17:58 +10:00
itsmattkc a422f6e369 timelineviewbase: decrease ctrl+scroll speed 2020-04-23 01:00:26 +10:00
itsmattkc 03ce9ee8f7 moved color widgets from ColorDialog folder to a widget folder 2020-04-22 23:38:51 +10:00
itsmattkc 197e60b6c3 export: show main color spaces rather than DVL chain 2020-04-22 23:34:23 +10:00
itsmattkc 361a986b79 renderer: added path for generating resized frames from textures 2020-04-22 22:58:00 +10:00
itsmattkc 26b928597c nodeview: only select if a graph is currently active
Fixes segfault where timeline attempted to signal NodeView to select nodes
after it had already cleared itself.
2020-04-22 18:18:22 +10:00
itsmattkc de783d214a colorwheel/colorgradient: clamped at 1.0
Since these are UI/display components, they are clamped at 0.0 - 1.0
2020-04-22 18:15:29 +10:00
itsmattkc 258f83d5d3 node: fixed bug that failed to load some default values from shader xml 2020-04-22 18:13:53 +10:00
itsmattkc db117e0780 mathnode: increased decimal places
Also includes general improvements to the slider widget such as an optional
"autotrim" function to cut off trailing zeroes, a "format" string that's easier
to internationalize, and general tidiness.
2020-04-22 17:49:32 +10:00
itsmattkc 0f825cbc44 oiiodecoder: updated to handle frame linesizes 2020-04-22 16:57:18 +10:00
itsmattkc c9e797abdf various: conformed frame usages to respect stride 2020-04-22 15:54:47 +10:00
itsmattkc 0a9ad8f235 opengltexture: implemented linesize fields whenever uploading data to a texture 2020-04-22 15:23:29 +10:00
itsmattkc eb6b9217ab frame: implemented usage of linesizes
Frame will transparently use an optimized linesize for it's allocated data.
2020-04-22 15:19:04 +10:00
itsmattkc c8da59a45e opengltexture: align all data to 16
Fixes crash if frame is not aligned to 16. This should probably
be folded into the Frame class itself at some point.
2020-04-22 15:08:36 +10:00
itsmattkc 1d7c29c6d8 colormanager: minor comment update
More explicitly explains what's happening.
2020-04-22 14:55:40 +10:00
itsmattkc bf787b1d2f projectproperties: updated to assume empty config is default config 2020-04-22 14:04:10 +10:00
itsmattkc 8272f482d9 colormanager: temporarily hardcoding default input color space
The first input color space is "linear" which is very rare for footage to be
in. For simplicity, it'll default to sRGB for now.
2020-04-22 13:44:18 +10:00
itsmattkc d15b08c181 sampleformat: fixed erroneous constant 2020-04-22 13:10:48 +10:00
itsmattkc ccb02d30aa colormanager: implement default config 2020-04-22 05:08:33 +10:00
itsmattkc 141ac8b12f audiomonitor: implemented hardware acceleration
Drawing is much smoother this way.
2020-04-22 01:26:39 +10:00
itsmattkc afa3d3babe audiomonitor: rewrote to handle audio independently of output
This gives the AudioMonitor more control over its own timing and appearance
and also reduces the load on the audio processing threads.
2020-04-22 01:09:49 +10:00
itsmattkc efeac6793e audio: increased qaudiooutput buffer size
Reduces stuttering with audio playback.
2020-04-21 23:52:16 +10:00
itsmattkc 38fcad6a3f cache: fixed signalling issue where changing default input didn't update the cache 2020-04-21 23:48:26 +10:00
itsmattkc 81ad7b5054 ffmpegdecoder: fixed deadlock when closing a decoder instance 2020-04-21 23:15:21 +10:00
itsmattkc 80a23abf15 Revert "travis: revert xcode version"
This reverts commit 20b10509fe.
2020-04-21 22:53:52 +10:00
itsmattkc 71ea92e86d core: set unsaved confirmation dialog to "WindowModal"
Makes messagebox appear as a sheet on macOS.
2020-04-21 19:54:55 +10:00
itsmattkc ab262092a6 viewer: removed unused debug line 2020-04-21 19:36:37 +10:00
itsmattkc c84f7fe724 style/preferences: don't set style if it hasn't changed
Improves Preferences dialog's "accept" speed. Before it would try changing the
style no matter what which took a noticeable amount of time to do for no real
purpose if the style didn't change.
2020-04-21 19:35:04 +10:00
itsmattkc 50d336ffb8 preferences: improved audio tab device refreshing
We used to use a somewhat convoluted process of multithreading since refreshing
the devices could take some time. Now we use the high-level QtConcurrent API
which reduces much of the complexity on our end and makes the code more
manageable.
2020-04-21 19:33:34 +10:00
itsmattkc d958b74e21 config: instantiate AudioOutput and AudioInput to empty strings 2020-04-21 19:33:08 +10:00
itsmattkc 412a6dfdc2 audio: moved output to its own high priority thread
macOS audio playback failed due to audio being processed in the main thread.
Now all audio playback has been placed into its own high priority thread to
always keep up better with the operating system's demands.
2020-04-21 19:31:29 +10:00
itsmattkc 05eae1e28a audio: don't use a shared QIODevice
This system was kind of janky anyway. It makes more sense ultimately for the
audio management classes to contain the file handle rather than the renderer.
2020-04-21 17:55:55 +10:00
itsmattkc 1d3b9bbf13 audiomanager: remove audio signalling
This is in preparation for upcoming modifications that we'll be making to the
AudioManager.
2020-04-21 17:45:39 +10:00
itsmattkc baa8df38f6 opengl: use compatibility profile
The GLSL shaders are written in GLSL 1.10 even though the OpenGL standard is
set to OpenGL ES 3.2 Core. Many platforms allow this but some platforms don't.
For standards compliance, it's probably a good idea in the future to upgrade
the shaders to 3.2, but for now we'll use 3.2 Compatibility which will allow the
GLSL 1.10 shaders to compile.
2020-04-21 02:49:17 +10:00
itsmattkc 0ced48d4df histogram: implemented color management 2020-04-21 01:59:06 +10:00
itsmattkc bdb13e88f5 histogram: implemented histogram widget 2020-04-21 01:29:08 +10:00
itsmattkc 6f4bf70d3e scope: implemented waveform scope 2020-04-20 22:58:29 +10:00
itsmattkc 9db82ddc2e timeinput: fixed broken ID 2020-04-20 18:55:52 +10:00
itsmattkc 84e73395ff panels: implement a small margin on all panels to ensure the focus border is always visible 2020-04-20 18:06:50 +10:00
itsmattkc cb14af326c removed opacity node
This node has been superseded by the math node since it essentially functions
as a multiply.
2020-04-20 17:48:35 +10:00
itsmattkc 1c3c8cd9b2 began work on headless export path 2020-04-20 02:37:10 +10:00
itsmattkc 1474a505ee mainmenu: removed debug log item
This was not implemented and I think there are better ways to acquire this
information.
2020-04-19 17:52:03 +10:00
itsmattkc 2849ae210c timeline/viewer: reimplemented "play in to out" and "loop" 2020-04-19 17:22:32 +10:00
itsmattkc 9d9825d8e1 trackviewitem: receive signal when mute is changed from another source 2020-04-19 16:26:48 +10:00
itsmattkc 410f3d25dc fixed menu bugs introduced in f2bff5f150
Turns out setting a QMenu parent *not* in the constructor leads to very strange
behavior. All parents are now set in the constructor.
2020-04-19 16:19:08 +10:00
itsmattkc f063d4741d nodeparamviewitembody: use all columns in subbodies
Minor UI improvement.
2020-04-19 15:35:26 +10:00
itsmattkc 9aed452f1d nodeparamviewitem: null check for keyframe control in SetTime() 2020-04-19 15:33:06 +10:00
itsmattkc 63c194896d core: implemented yes/no to all when closing multiple modified projects 2020-04-19 03:29:39 +10:00
itsmattkc d232e035f5 mainwindow/project: implemented saving/restoring panel state to project file 2020-04-19 02:25:02 +10:00
itsmattkc 8a26e14efa mainwindow: set unique object name on all panels that are in a "series" 2020-04-19 01:42:51 +10:00
itsmattkc 2716cfa7f5 panels: enforced setting an object name by using a mandatory constructor parameter 2020-04-19 01:35:48 +10:00
itsmattkc f2bff5f150 menu: ensure all addMenu() calls are followed with setParent() calls
Ensures memory taken by creating a new menu is freed.
2020-04-19 01:26:54 +10:00
itsmattkc 0c88a146c1 projectexplorer: added new menu to context menu 2020-04-19 01:16:55 +10:00
itsmattkc 55dcf0f5fd projectexplorer: added functionality for opening a folder in another tab/window 2020-04-19 01:11:50 +10:00
itsmattkc 93e5e7c0c1 core/mainmenu: implemented save/close all/current actions for multiple projects
Expands on UI from multiple project support implemented earlier.
2020-04-19 00:37:44 +10:00
itsmattkc aecd381e6b nodeparamviewitem: show arrays in NodeParamView
Uses nested widgets to show array objects in the NodeParamView.
2020-04-19 00:04:22 +10:00
itsmattkc fa0afb74c8 solid: updated default value to use new syntax
Using ':' instead of ',' should avoid any potential internationalization issues
regarding languages that use ',' for decimals rather than '.'
2020-04-19 00:03:05 +10:00
itsmattkc a796cb2c13 nodeparamview: separated the NodeParamView body into a separate widget for nesting
Will allow display of NodeInputArrays.
2020-04-18 23:28:11 +10:00
itsmattkc 707e9d5522 project: fixed bug where ocio config wouldn't automatically load from a saved project 2020-04-18 17:55:23 +10:00
itsmattkc d3b71e6576 nodes: color management when setting color parameters is now preserved 2020-04-18 17:43:37 +10:00
itsmattkc f73c41d3fa various: implemented multiple project support
This required various changes to various parts of the infrastructure (mostly
using paths to finding the "root project" of any given object throughout).
Now theoretically infinite projects can be opened and accounted for at any
given time.
2020-04-18 01:50:47 +10:00
itsmattkc 77c0db55a5 viewer: implemented display of title/action safe margins 2020-04-17 18:59:17 +10:00