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