Commit Graph
100 Commits
Author SHA1 Message Date
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
itsmattkc 6df708028f core: reimplemented "open recent" functionality and opening a project from command line 2020-04-17 02:57:56 +10:00
itsmattkc 5f23fa24a7 config: use qstringliteral for config filename
Minor optimization.
2020-04-17 02:56:50 +10:00
itsmattkc 832cc986b7 timeline/block: reimplemented enabling/disabling blocks 2020-04-17 02:16:04 +10:00
itsmattkc 78c3c10e5f timeline: reimplemented deleting/ripple deleting the in/out region 2020-04-17 01:41:20 +10:00
itsmattkc d8e0a31375 color: when converting to a QColor for UI, clamp to 0.0-1.0 2020-04-17 01:17:14 +10:00
itsmattkc df5b66c3c7 nodeparamview: show connections in the param view 2020-04-17 01:07:13 +10:00
itsmattkc 42905d1d51 mainmenu/menushared: rewrote convenience functions to use new qt signal/slot syntax
Code improvement
2020-04-17 00:20:46 +10:00
itsmattkc a5c1de6df3 timebasedwidget: implemented go to in/out 2020-04-17 00:20:16 +10:00
itsmattkc a93b06b7a2 Revert "solid shader: moved from generator to input category"
This reverts commit 07dfe1c364.
2020-04-16 23:15:19 +10:00
itsmattkc df534fadbe common: added function to convert any number to a hex string
Helps with debugging.
2020-04-16 23:13:35 +10:00
itsmattkc 2f80be437a node: fixed issue with "taking" values from input tables
As opposed to simply leaving all values in the table, nodes can now "take"
values that they use to free up memory (e.g. "taking" input buffers if they're
used to produce an output buffer).

This is a fairly large change, expect regressions.
2020-04-16 23:12:05 +10:00
itsmattkc cc8699c0bc colordialog: don't clamp values 2020-04-16 15:26:05 +10:00
itsmattkc 8656b79319 opacitynode: switch view to percent rather than as a normal number 2020-04-16 14:54:46 +10:00
itsmattkc b4795c0222 blur: merged box and gaussian blurs into one node
While these are two separate blur effects, merging them into one node will
allow quick swapping of blur methods.
2020-04-16 13:17:30 +10:00
itsmattkc 61654e8127 Merge branch 'master' of https://github.com/olive-editor/olive 2020-04-16 12:23:52 +10:00
itsmattkc ca071beb33 Merge branch 'master' of https://github.com/olive-editor/olive 2020-04-16 12:21:09 +10:00
itsmattkc 32969d2403 colordialog: updated to show input/reference/display values 2020-04-15 18:11:46 +10:00
itsmattkc 9cc4349054 timebasedwidget: re-implemented toggle show all function 2020-04-15 15:31:54 +10:00
itsmattkc 2610d58ae3 footagecombobox: fixed bug where footagecombobox would display null on first showing 2020-04-15 03:59:46 +10:00
itsmattkc cc421d4108 keyframeview: show correct length and jump to the corresponding time in NodeParamView 2020-04-15 03:35:48 +10:00
itsmattkc 7ea8c52c78 /nodeparamviewwidgetbridge: block combobox signals when updating from node
Prevents unnecessary re-caching caused by the combobox signalling that its
value has changed when we're really just setting the value that the node already
has.
2020-04-15 02:52:24 +10:00
itsmattkc 07dfe1c364 solid shader: moved from generator to input category 2020-04-15 02:52:12 +10:00
itsmattkc cb6c054b8d trigonometrynode: implemented trigonometry node 2020-04-15 02:41:20 +10:00
itsmattkc c09d83291e nodeparamviewwidgetbridge: empty combobox entries are separators 2020-04-15 02:41:05 +10:00
itsmattkc c761403ba4 mathnode: override texture x matrix op 2020-04-15 02:07:48 +10:00
itsmattkc a0a7d106dc mathnode: implemented add/subtract/multiply/divide/power functions
Includes implementing combobox UI for the NodeParamViewWidgetBridge.
2020-04-15 01:52:24 +10:00
itsmattkc fd1ecfae6f audio: removed hardcoded stereo value
Fixes bug that caused AudioMonitor to only show two channels regardless of the
actual number of channels being mixed.
2020-04-14 23:55:28 +10:00
itsmattkc 2646d424d8 sequence: fixed broken detection of audio channel layouts when setting params from footage 2020-04-14 23:49:48 +10:00
itsmattkc 9f7a9d85b4 ffmpegdecoder: fixed deadlock on non-video streams 2020-04-14 23:42:31 +10:00
itsmattkc 6046b1e892 timeline: fixed bug that prevented clips from being dragged to lower tracks 2020-04-14 23:36:59 +10:00
itsmattkc d8df104c35 keyframeviewbase: for one-dimensional views, if multiple keys are at the same time, select all of them 2020-04-14 23:26:59 +10:00
itsmattkc e5ac9d48a6 mathnode: added path for math between a texture and a matrix 2020-04-14 23:07:00 +10:00
itsmattkc a2f954a0a7 memorypool: implemented arenas
A pool can allocate/destroy any amount of arenas during runtime, meaning it
won't run out of memory but we still get the advantages of one large allocation
as opposed to hundreds of small allocations.
2020-04-14 16:23:45 +10:00
itsmattkc feceef0d62 ffmpegdecoder: impose limit on memory frame cache 2020-04-14 15:16:38 +10:00
itsmattkc 9cc343bf13 ffmpegdecoder: share framepool with all instances
We can conserve memory by sharing our frame pool amongst instances of the same
stream.
2020-04-14 14:51:31 +10:00
itsmattkc b3bebeeef3 decoder: removed unused destructor
Very old unused code.
2020-04-14 14:51:15 +10:00
itsmattkc 9a25064b00 memorypool: placed mutex around get and release functions
Makes all memory pool derivatives effectively thread-safe.
2020-04-14 14:50:37 +10:00
itsmattkc 873f58d057 Merge branch 'decoder-ffpool' 2020-04-14 02:45:38 +10:00
itsmattkc 7bfdf8af7c ffmpegframepool: implemented functional frame pool
Includes splitting off core functionality to a base MemoryPool class that can
be re-used later if necessary.
2020-04-14 02:43:12 +10:00
itsmattkc 2eb03bf386 various: removed constructor.h include 2020-04-14 00:53:25 +10:00
itsmattkc 20b10509fe travis: revert xcode version
Updating the Xcode version appears to have broken rendering on macOS.
2020-04-13 23:45:16 +10:00
itsmattkc 6bb972b4db decoder: began implementation of a frame pool 2020-04-13 23:44:42 +10:00
itsmattkc 5c927ce7a4 core: merged define and constructor headers 2020-04-13 23:44:18 +10:00
itsmattkc f80a82459b ffmpegdecoder: clear cache_at_zero flag if frames are removed 2020-04-13 13:24:30 +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 cdf5a1058d ffmpegdecoder: re-use existing frame pool for memory management 2020-04-12 14:12:08 +10:00
itsmattkc fa16d2169b videorenderbackend: render sequentially rather than outwards 2020-04-12 02:11:55 +10:00
itsmattkc 4d8af6855f ffmpegdecoder: made all instances shared
Decoders now share instances between them and can interact with other threads
to share resources and continue the work of others.
2020-04-12 01:49:10 +10:00
itsmattkc e6b47a817c ffmpegdecoder: separated instance from decoder entity
Should allow for different decoders in different threads to share a single
instance.
2020-04-11 17:37:52 +10:00
itsmattkc a8fbe686e2 openglrenderer: retrieve frame in each worker thread rather than in the proxy thread
Since we now have decoders in each thread, we can parallelize by retrieving
frames in each thread as well.
2020-04-11 17:37:00 +10:00
itsmattkc f08734d18e index/confirm tasks: these tasks no longer need to open the decoder to perform said tasks 2020-04-11 17:36:16 +10:00
itsmattkc ce7fa12520 ffmpegdecoder: implemented basic decoder crosstalk 2020-04-11 13:18:44 +10:00
itsmattkc 0c3ce03348 renderer: use a dedicated decoder per thread 2020-04-11 13:18:31 +10:00
itsmattkc 4cb02b6769 core: set config defaults a second time before loading
Works around an issue where media cache directories would be set before the
app name is set (which Qt uses to return the local appdata dirs used to
set the cache directories).
2020-04-08 02:03:46 +10:00
itsmattkc f5a9dee139 exportdialog: added elapsed/remaining time indicator 2020-04-08 01:48:03 +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 6d6b2b237e projectexplorer/mainwindow: close sequence if it's open before deleting it 2020-04-07 03:11:50 +10:00
itsmattkc cf04cad238 mainwindow/timelinepanel: closing a timeline will close a sequence entirely
UI detail.
2020-04-07 03:07:43 +10:00
itsmattkc 9f89f57090 track: when length changes, force the new area to invalidate
The track limits cache invalidation signals to the length of the track. On some
platforms, if a block length was changed to the point that it changed the
track length, the track length would change AFTER the cache invalidation and
therefore never end up getting rendered.

This commit ensures that when a track's length changes, the new section is
invalidated regardless of ordering.
2020-04-07 02:34:59 +10:00
itsmattkc 48a1f20ff3 git: ignore "build" folders 2020-04-06 23:40:01 +10:00
itsmattkc ee5d47a53f viewer: check if file exists before passing to OIIO
This is valid in our system and suppresses OIIO message when files do not exist.
2020-04-06 23:39:19 +10:00
itsmattkc 1b4c241b5b windows: implemented export progress on taskbar button 2020-04-06 18:13:07 +10:00
itsmattkc 78c592cf8d audiorenderer: fixed bug where conform signals would send corrupt re-cache time 2020-04-06 17:10:15 +10:00
itsmattkc 4a8a44a8b1 timerange: added debug output functions for the TimeRange and TimeRangeList classes 2020-04-06 17:08:13 +10:00
itsmattkc 8cbac84c96 samplebuffer: added an assert to ensure valid allocations occur 2020-04-06 17:07:38 +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 82b6ddccc8 added olive namespace macros 2020-04-06 03:34:11 +10:00
itsmattkc 1c063c5c11 export: began windows taskbar button progress feedback 2020-04-06 03:33:52 +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 edc38ad8a2 timeline: implemented adding objects in the timeline (e.g. solid, title) 2020-04-06 00:05:09 +10:00
itsmattkc 0acad08887 timeline: unlink clip if it is completely overwritten 2020-04-05 23:19:55 +10:00
itsmattkc 5e66508f3c curveview: color code keyframe tracks when more than one is present 2020-04-05 23:15:47 +10:00
itsmattkc 9133bbe632 curveview: implemented keyframe tracks
I'm not sure why this wasn't implemented before, but as a pretty integral part
of the keyframe system, now it is.
2020-04-05 20:19:46 +10:00
itsmattkc 6ea52e4123 audio renderer/timeline: pass through channel count of waveform visualizations 2020-04-05 19:59:14 +10:00
itsmattkc 56178648bd timelinepoints: implemented saving/loading into project files 2020-04-05 19:21:17 +10:00
itsmattkc e3a8d32e4a audiorenderer: fill destination buffer with zeroes before copying samples over
Ensures no uninitialized values end up in the audio cache.
2020-04-05 13:29:04 +10:00
itsmattkc 5b48c1ceb0 travis: try newer xcode sdk for better mojave+ support 2020-04-05 11:41:19 +10:00
itsmattkc 92da0c220d exporter: wait for conforms/indexes when exporting audio
The audio rendering system uses an event-based mechanism where if audio needs
to be converted (i.e. to a different sample rate), it will create a conform
task and re-render that section again when the audio is ready. Unfortunately,
the export code didn't respect this and would start encoding audio once the
initial queue was done. This usually resulted in silent audio, but could also
result in "uninitialized" audio that would crash any float-based encoders
(e.g. AAC). Now we use a different signal that only emits once the queue is done
AND all conforms are done.
2020-04-05 00:13:26 +11:00
itsmattkc fb1cf1edaf ffmpegencoder: improvements to resampling
Updates the AVFrame's nb_samples field to the amount of samples retrieved from
swresample so it doesn't encode more or less samples than it has.
2020-04-05 00:12:23 +11:00
itsmattkc 626c50477c renderer: set null value on shader if no value was found in the table 2020-04-04 19:28:38 +11:00
itsmattkc c4b11c7bd1 nodevalue: return a null qvariant instead of 0 if there is no matching value in the table 2020-04-04 19:04:44 +11:00
itsmattkc c82ca3c716 audiorenderer: don't memcpy if the copy length is zero 2020-04-04 17:25:31 +11:00
itsmattkc 615e227f9a renderer: convert footage frames to reference pixel format
Due to an oversight, incoming footage frames were NOT converted to the
working pixel format (usually half or float). For most frames, this meant the
OCIO conversion would occur on frames while they were still in their source
format (usually either RGB8 or RGB16). This leads to rounding error
inaccuracies, but even worse GLSL will clamp integer textures to 1.0 potentially
losing a lot of data.

While later nodes would correctly convert to the appropriate format, by then it
would be too late. This commit corrects this issue, converting the frames to
float during the OCIO shader pass.
2020-04-04 14:15:18 +11:00
itsmattkc 55c86f6cb6 viewer: removed framebuffer that never got used
This framebuffer was an early approach to the pixel sampler that never got
used, but was still getting created/destroyed unnecessarily. This has now
been removed.
2020-04-04 14:11:16 +11:00
itsmattkc b2090c113c videorenderingparams: added divider to constructor that doesn't have mode or timebase 2020-04-04 14:09:46 +11:00