itsmattkc
373eeaeacd
renderer: when invalidating visible, kick the workers into emit mode
2020-05-07 01:29:05 +10:00
itsmattkc
c61adbf2a2
videorenderer: if an InvalidateVisible() signal comes through, cancel the queue
...
Optimization that frees up the GPU as quickly as possible when the user starts
making changes that may require quick feedback.
2020-05-07 00:56:16 +10:00
itsmattkc
c387ce1cd7
polygon node: early crude implementation
2020-05-05 00:22:49 +10:00
itsmattkc
cfc5ce24a3
Merge branch 'master' into gizmos
2020-05-02 17:06:49 +10:00
itsmattkc
4906bb7d53
scopes: don't use shared context
...
OpenGL shared contexts (through Qt at least) seem to be buggy. Scopes have been
shifted to a non-shared approach as a result.
2020-04-28 17:08:52 +10:00
itsmattkc
1cca9de7c5
gizmos: implemented pathway for node to draw on the viewer
2020-04-27 04:34:36 +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
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
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
7768925826
manageddisplay: started base class for widgets that are managed
2020-04-24 00:17:32 +10:00
itsmattkc
1f34b89950
viewer: removed unnecessary debug line
2020-04-23 18:06:49 +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
ccb02d30aa
colormanager: implement default config
2020-04-22 05:08:33 +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
0ced48d4df
histogram: implemented color management
2020-04-21 01:59:06 +10:00
itsmattkc
6f4bf70d3e
scope: implemented waveform scope
2020-04-20 22:58:29 +10:00
itsmattkc
2849ae210c
timeline/viewer: reimplemented "play in to out" and "loop"
2020-04-19 17:22:32 +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
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
77c0db55a5
viewer: implemented display of title/action safe margins
2020-04-17 18:59:17 +10:00
itsmattkc
aac47ba776
viewer: re-queue video renderer even when beyond the length
...
Ensures video renderer always renders where the playhead is.
2020-04-13 13:19:08 +10:00
itsmattkc
7bc7b6098b
ui: moved remaining QMenus to our Menu class
...
Mainly to take advantage of Menu's specific styling on certain platforms to
keep a consistency.
2020-04-08 00:46:30 +10:00
itsmattkc
1aa87cbda6
various: encapsulate all code in the olive namespace to avoid name collisions
...
Large-scale code cleanup. Also adds a license to the top of all files that were
missing it.
2020-04-06 15:29:53 +10:00
itsmattkc
59fa80ae57
ui: on windows, use native menus
...
Minor UI improvement for Windows users.
2020-04-06 00:14:36 +10:00
itsmattkc
1319d7141f
viewer: re-implemented auto viewer full screen from menubar/keyboard shortcut
2020-04-01 19:22:53 +11:00
itsmattkc
ed48d24cbc
viewerwindow: implemented displaying a viewer image fullscreen on another monitor
...
Implements an extra widget to display images on a separate monitor. Both
viewers have separate display color controls since different monitors may
conform to different standards/transforms.
2020-04-01 19:21:25 +11:00
itsmattkc
6ea6dd810e
pixelsampler: added pixel sampler panel
...
When visible, this panel will show the current reference and display transformed
color under the cursor of any viewer.
2020-04-01 16:57:10 +11:00
itsmattkc
3c3543a2a9
viewer: avoid divide by zero on sequences with zero length
2020-03-21 13:15:11 +11:00
itsmattkc
fed17e35fa
audiowaveformview: optimizes waveform to only redraw when necessary
...
Draws to a pixmap only when the waveform changes so it doesn't have to be
regenerated on every draw. Also renames WaveformView to AudioWaveformView
2020-03-18 14:44:05 +11:00
itsmattkc
1c192100c2
viewer: fixed bug where seeking would be stuck to one frame
2020-03-17 00:01:18 +11:00
itsmattkc
50061e4e55
waveformview: show in/out points in waveformview
...
Moved drawing routines to the base class that is used by both TimeRuler
and WaveformView
2020-03-15 18:21:14 +11:00
itsmattkc
a56484d3e6
timelinescaledobject: implemented minimum scale
...
Used by Viewer to keep TimeRuler and WaveformView within restrictions.
2020-03-14 22:34:23 +11:00
itsmattkc
7f2dcc8200
waveformview: made UI seekable
2020-03-14 01:57:40 +11:00
itsmattkc
73d693f2d5
waveformview: implemented basic waveformview display
2020-03-14 01:22:03 +11:00
itsmattkc
c1c8067ee7
viewer: implemented basic zoom
...
No scrolling functionality yet, but the zoom is functional and efficient.
2020-03-13 16:41:09 +11:00
itsmattkc
0418c8ab85
viewer: began waveformview widget
2020-03-13 16:02:18 +11:00
itsmattkc
e2fe9ad548
viewer: folded waveform view into base viewer widget class
2020-03-13 15:48:09 +11:00
itsmattkc
9e4c79699e
node: split off traversing functions from renderer for usage elsewhere
...
Fixes issue where Viewer node wouldn't pick up correct length if a tracks
weren't in use.
2020-03-13 15:31:15 +11:00
itsmattkc
02ce48d0c6
various: pixel optimizations
...
Several things are accomplished in this commit, including:
- Use OIIO instead of our own functions for pixel format conversions
(cleaner code/less for us to maintain)
- Fold all PixelService functions into the PixelFormat class
(cleaner code)
- Moved OpenGL pixel definitions to OpenGL classes and out of the
global classes.
- Add support for RGB buffers as well as RGBA (optimization)
2020-02-27 13:54:38 +11:00
itsmattkc
fceb1e8d3e
viewer: re-render both video and audio if parameters change
2020-02-24 11:57:39 +11:00
itsmattkc
3cffffdcee
viewer: use vsync for updates rather than a timer
...
Improves viewer appearance and performance. Rather than using a timer roughly
set to the sequence's frame rate to update the viewer, the viewer synchronizes
itself to the display's refresh rate resulting in much smoother playback.
2020-02-21 00:42:46 +11:00
itsmattkc
b231720398
viewer: prevent shuttle left/right from ever pausing
...
If the speed ever goes from 1 or -1 to 0, it'll in/decrease the speed one more
so it doesn't pause.
2020-02-20 19:12:14 +11:00
itsmattkc
03bdf01357
decoder/renderer: no longer index automatically as part of the retrieve
...
functions
Indexing is a lengthy process and had a high chance of getting RenderWorkers
stuck doing it rather than being responsive to cache requests. This commit
introduces a system where workers never index media, but instead signal that
media is not ready to their RenderBackends which ensure that the media gets
indexed and re-queues the affected frames when those indexes are ready.
2020-02-19 11:44:29 +11:00
itsmattkc
8265fef5c5
viewer: update renderer parameters if the viewer node's parameters have changed
2020-02-17 15:34:26 +11:00
itsmattkc
ceb70a1870
viewer: use internal texture to allow viewer to control texture as part of its
...
context
More intuitive code flow and allows the user to undock the viewer (which
forcibly destroys and recreates the context) and the viewer will handle
creation of the new texture in said new context.
2020-02-16 18:24:49 +11:00
itsmattkc
1776615999
viewer: map context menu position from sender rather than itself
2020-02-16 00:57:34 +11:00
itsmattkc
d66425c324
prepared gl improvements for merge
2020-02-14 02:35:10 +11:00
itsmattkc
6a47b05ab8
work on oslworker
2020-02-14 02:13:38 +11:00
itsmattkc
40e8aec285
viewer: minor code improvements
2020-02-03 01:27:45 +11:00
itsmattkc
9b7cbb3fbd
viewer: automatically update maximum scroll from media length
2020-02-01 23:09:25 +11:00