Commit Graph
100 Commits
Author SHA1 Message Date
itsmattkc 10709880fc preliminary google crashpad integration
First attempt at automated out-of-process crash reporting. Have only
updated AppVeyor script so far, so if this works (which it won't), it'll
only work on Windows.
2020-08-14 18:25:12 +10:00
itsmattkc 857531b011 core: don't start if help or version args are used 2020-08-13 15:41:28 +10:00
itsmattkc 3ae3079a7a cmake: fallback if both openexr build types are not available 2020-08-11 12:13:16 +10:00
itsmattkc ec8b046f02 viewer: implemented basic deinterlace
Implements a very basic GLSL deinterlace that simply halves the vertical
resolution and then interpolates between the fields. This can be toggled
on or off.

The reasons for being so basic is:
- Speed, very quick code running in OpenGL
- It would seem the highest quality deinterlacers are temporally based
  which doesn't make much sense for the viewer, particularly since we can't
  double the frame rate since our timecode is fixed to the frames.

Higher quality interlacing/deinterlacing will be present in the actual
renderer.
2020-08-11 02:02:50 +10:00
itsmattkc 75b4bfe57e viewer: clear current render queue before creating next queue
Hilariously, the queue was being cleared right after it was being set
thus cancelling the whole operation out. This has now been fixed.
2020-08-11 01:02:14 +10:00
itsmattkc 43ad1d4368 cmake: find openexr release/debug separately and define them as such
Minor CMake improvement that becomes a major improvement on Windows,
because for some reason OpenEXR on Windows always crashes if you mix
release/debug builds (e.g. release OpenEXR + debug Olive and vice versa).
This ensures that as long as you have both release and debug (which you
will if you installed from vcpkg), CMake will link the correct lib and
prevent crashes.
2020-08-11 00:49:56 +10:00
itsmattkc 1b7badb85b fixed shadowed variable issue 2020-08-10 23:17:51 +10:00
itsmattkc be4a969666 config: default to system locale rather than en_US 2020-08-10 21:37:17 +10:00
itsmattkc 08d4c7b385 config: save style 2020-08-10 21:37:04 +10:00
itsmattkc 03e33227b3 cache: moved disk settings to a separate dialog
This way the cache settings can be accessed in both ProjectProperties and
Preferences.
2020-08-10 20:30:11 +10:00
itsmattkc 192ea45a24 sequencedialog: use lower field dominance in standard definition presets 2020-08-10 18:33:29 +10:00
itsmattkc 920530e759 Merge branch 'master' of https://github.com/olive-editor/olive 2020-08-10 18:32:58 +10:00
itsmattkc ac649c86c5 datatype: convert kInt type as a int64_t (which QVariant can't do automatically) 2020-08-10 18:30:35 +10:00
itsmattkc 5723690a21 playbackcontrols: set play button policy to QPushButton default
Minor cosmetic improvement.
2020-08-10 17:27:32 +10:00
itsmattkc 70085588d6 audiomonitor: fixed bug where audio was shown at normal speed even if playing faster 2020-08-10 17:12:39 +10:00
itsmattkc ea7289805a timeline: re-enable length changed signal
Fixes issue where length wouldn't update sometimes.
2020-08-10 14:04:30 +10:00
itsmattkc 4f1e7ea4ef oiio: fixed incorrect version namespace 2020-08-10 02:54:03 +10:00
itsmattkc e21b68be53 renderer: queue hash setting from another thread
Fixes race condition that caused many segfaults.
2020-08-10 02:09:24 +10:00
itsmattkc 4e3cafe578 precachetask: removed unnecessary hash setting
Pre-cache doesn't need to set a memory cache since its only purpose is to
write to the disk cache.
2020-08-10 02:08:58 +10:00
itsmattkc 28dcff10c0 various: implement sequence pixel aspect ratios and interlacing settings
Implements the following:
- Sequences have pixel aspect ratios that work in tandem with footage PARs
  to render footage correctly. Viewer and export also acknowledge PARs
- Sequences can have interlacing settings. This doesn't do anything yet,
  eventually the renderer will need to interlace/deinterlace/reinterlace
  appropriately in order to conform all the footage to the sequence. Export
  acknowledges interlacing, but this only affects metadata, not the image.
2020-08-10 01:47:26 +10:00
itsmattkc 901f1001af renderer: improved memory management
Clear up more memory when it isn't used for a while.
2020-08-09 14:03:11 +10:00
itsmattkc 4fac083799 lol i accidentally deleted the mac fix when i reverted the cmake files
big time oof
2020-08-08 03:17:21 +10:00
itsmattkc 0075733da1 footageviewer: fixed bug that signalled a null footage file 2020-08-08 03:08:40 +10:00
itsmattkc edeeed49ba various: enabled config saving 2020-08-08 02:44:39 +10:00
itsmattkc 99d94a0d82 ci: build relwithdebinfo instead of debug
Probably more appropriate for end-user use.
2020-08-08 02:27:46 +10:00
itsmattkc 0cd4edad57 cmake: fixed macos/brew compile issue 2020-08-07 23:29:25 +10:00
itsmattkc aa31f8ac97 fixed shadowed parameter 2020-08-07 22:46:07 +10:00
itsmattkc cca4a2ad5a Merge branch 'sobotka-histogram-updates' 2020-08-07 20:32:50 +10:00
itsmattkc e45174cf51 Merge branch 'histogram-updates' of https://github.com/sobotka/olive into sobotka-histogram-updates 2020-08-07 20:32:35 +10:00
itsmattkc c6dd0e0204 nodeview: select on right click 2020-08-07 20:17:01 +10:00
itsmattkc 849e051fa4 ci: build debug builds rather than release builds 2020-08-07 19:58:44 +10:00
itsmattkc 1b2b5d3b75 diskmanager: save configured disk cache location 2020-08-07 19:00:09 +10:00
itsmattkc d85089f71a cache: improved setting manual cache path on a per project basis 2020-08-07 13:41:09 +10:00
itsmattkc df14c2aaa7 cache: better implemented changing disk cache folders
Not complete yet, but getting there.
2020-08-07 02:31:46 +10:00
itsmattkc 00d84cfda0 mainmenu: added project properties keyboard shortcut
It just seemed like the right thing to do.
2020-08-07 01:24:31 +10:00
itsmattkc f8f3aa982d ui: added plus and minus buttons
Didn't end up using these, but they may come in handy later. Also updated
the theme build scripts since they hadn't been updated in like a year.
2020-08-07 01:24:11 +10:00
itsmattkc a34d696138 various: fixed issues on some compilers 2020-08-06 01:50:49 +10:00
itsmattkc fa02430d48 cache: reimplemented disk manager to enforce limit in preferences 2020-08-06 01:30:51 +10:00
itsmattkc 02c0fb7316 nodeview: automatically deselect blocks that have been removed
Fixes segfault attempting to access and select an item that's already been
removed.
2020-08-05 23:56:42 +10:00
itsmattkc d5dce29b22 cache: merged cachetask and footagecache into one precache task
Since the actual auto-cache now happens elsewhere, this cleans up a lot of
dead code.
2020-08-05 23:45:18 +10:00
itsmattkc 07a53d45f0 renderer: updated audio waveform generated for new cache overhaul 2020-08-05 22:32:24 +10:00
itsmattkc 9a4dcd8277 ffmpegdecoder: handle unexpected EOF 2020-08-05 22:31:14 +10:00
itsmattkc c8def73b95 cache: mild auto-cache overhaul
Shifted from CacheTask to functionality built into RenderBackend. It was
a lot easier to control behavior this way without having to juggle a ton
of threads and race conditions.

Could likely be multithreaded further.
2020-08-05 02:19:04 +10:00
itsmattkc 07a3216a1f timeline: if an item is selected while deleted, emit the deselection signal 2020-08-05 01:42:52 +10:00
itsmattkc d453c13c15 initialize variable (fixes gcc build issue) 2020-08-05 01:38:00 +10:00
itsmattkc 2afa5a42c7 ui: optimized widget signals for selecting clips/nodes
Decent performance optimization when working with the UI.
2020-08-01 02:12:20 +10:00
itsmattkc fb05594b50 various: allow setting footage aspect ratios
We had support for detecting aspect ratios and respecting them in the
render, but this allows people to not only see the aspect ratio in use,
but also override it with their own.
2020-07-25 00:58:01 +10:00
itsmattkc dca4c6d960 export: allow rgb32f and rgba32f to pass through ocio without conversion
Minor optimization.
2020-07-24 14:45:55 +10:00
itsmattkc 5235975d6d export: allow selecting output pixel format 2020-07-24 14:45:27 +10:00
itsmattkc 86b66004b0 ui: removed last of the widget proxies 2020-07-23 23:11:00 +10:00
itsmattkc e570abb556 sequencedialog: split off the preset code for use elsewhere (particularly the export dialog) 2020-07-23 20:07:11 +10:00
itsmattkc ce486f6b84 cache: null check on saving frames
Includes a warning since I'm not sure yet if this is problematic behavior
or not yet.
2020-07-23 18:46:47 +10:00
itsmattkc 867e3729f4 renderer: check array parents/children when traversing the graph for duplicates
Fixes bug where nodes would be updated out of order and segfault if they
no longer existed.
2020-07-23 18:45:59 +10:00
itsmattkc 023ded1fb5 timeline: overhauled pointer tool again
Allows dynamic switching between pointer/roll/slide since occasionally this
behavior is interchangeable. Fixes a lot of transition behavior (but not
all of it).
2020-07-23 18:37:57 +10:00
itsmattkc c76b25a17a timeline: tools don't need to call move in the release function
I had thought that the cursor may still have moved between the last
mouseMoveEvent and the mouseReleaseEvent, but that turns out to be false
making it completely unnecessary to call move functions in the release
function.
2020-07-23 01:29:04 +10:00
itsmattkc ce353ccbed timeline: various work to improve timeline behavior, particularly when dealing with transitions 2020-07-22 18:09:57 +10:00
itsmattkc 73769d9e85 mainmenu: set snapping menu item's checked value on startup
Since this action handles the key press, if it's checked value is not equal
to the real value, it will be a no-op first before it "syncs" with the
real value.
2020-07-22 10:33:06 +10:00
itsmattkc 4268ccd75e importtool: fixed broken snapping
Snap points were made before the ghost's in/outs were set resulting in
incorrect points.
2020-07-22 10:32:04 +10:00
itsmattkc c301f71d1a Merge branch 'master' of https://github.com/olive-editor/olive 2020-07-19 12:11:47 +10:00
itsmattkc 70b21d6c2a renderer: always prioritize array parent over children
Fixes common segfault.
2020-07-19 12:03:31 +10:00
itsmattkc d54d59fac6 transition: remove alpha channel requirement 2020-07-19 11:33:51 +10:00
itsmattkc 6309b8fbb7 math: fixed power function
Corrected shader code and fixed bug in widget bridge that reported an
incorrect index.
2020-07-17 12:33:28 +10:00
itsmattkc 662d66ad10 transitions: extended transition logic
General code and functionality improvements. Moved more code out of the
OpenGL backend for portability. Implemented audio transitions.
Implemented basic transition animation curve settings.
2020-07-16 00:36:21 +10:00
itsmattkc de74adeb5e nodes: improved changed signal processing
Improves stability and cache reliability.

Earlier iterations were prone to skipping necessary signals (usually
leading to some sort of assert fail), particularly when track
optimizations were used. Those optimizations have been moved to the
viewer node so there's a higher degree of control over which signals
get optimized and in which ways.
2020-07-16 00:32:00 +10:00
itsmattkc e67b801a50 renderer: treat buffer inputs as texture inputs when appropriate
Fixes bug where a null buffer would not set a null texture.
2020-07-14 22:32:27 +10:00
itsmattkc fdfadd8858 add tool: use new class directly rather than text ID
Minor code improvement/optimization.
2020-07-14 22:32:01 +10:00
itsmattkc ae62750d9d various: fix broken transition creation
It's now possible to create transitions! But they're still broken in
a multitude of other ways so plenty more work to do hahahahahahahahaha
2020-07-14 22:31:11 +10:00
itsmattkc 11afdf32fe decoder/timeline: improve decoding of still images 2020-07-12 18:25:51 +10:00
itsmattkc 4d6003bb55 slider: update label color
Dark blue on dark gray was a little unreadable.
2020-07-12 13:54:31 +10:00
itsmattkc ceeb491293 richtextdialog: implemented basic html tag editing
Another step in moving away from the WYSIWYG rich text dialog.
2020-07-11 01:44:48 +10:00
itsmattkc 39d71eb7cd nodeview: drop nodes on release rather than press
Minor UI improvement that also addresses issue where the cache would
ignore the invalidation.
2020-07-10 19:28:42 +10:00
itsmattkc cabf581a20 code: fixed typo
Not sure how this got here but ok
2020-07-10 18:45:45 +10:00
itsmattkc c710fd162e richtextdialog: show html tags rather than wysiwyg
While good in theory, a WYSIWYG rich text editor for large video frames
was unwieldy (and in many cases unhelpful). Instead the titler will
show plain text/HTML tags so the user can still write rich text but
without the unwieldy UI.

For a true WYSIWYG experience, we would probably need to write a true
graphical editor (a la Premiere's titler), but that's a later goal.
This titler will be sufficient in a good majority of cases and there
are plenty of dedicated graphics packages if more complex titling is
required for the timebeing.
2020-07-10 18:42:13 +10:00
itsmattkc efd90d5c8f renderer: use shared backend when caching
I think there was an earlier commit with a similar name but turns out
I'd only done foundational work in that commit and never actually
properly set it up. Of course once I did, there were several issues that
needed fixing to make it work correctly, but now it works as expected.

Heavily optimizes larger projects by allowing cache jobs to only copy
what has changed.
2020-07-10 18:39:47 +10:00
itsmattkc 36dd06d2dc viewer: set video and audio caches to children of the viewer
Ensures their thread gets changed along with the viewer. The project
gets loaded/created in a background thread so the GUI can remain
responsive, and is then moved to the main thread for intended event
handling. However if the caches aren't parented, the hierarchy breaks
and the caches remain in a thread whose event loop is quickly destroyed.
Now that they're parented, events can be properly queued on them once
again.
2020-07-10 18:34:16 +10:00
itsmattkc df78e88150 cmake: disable optimizations for debug builds
Makes debugging certain bugs easier.
2020-07-10 18:30:03 +10:00
itsmattkc 90bc678377 nodeinputarray: delete sub-params immediately instead of queuing
Queuing the destructor caused a potential desync in the node graph that
disconnected blocks after they were reconnected elsewhere. Destroying
immediately keeps this logic synchronized.
2020-07-10 18:26:30 +10:00
itsmattkc 0f9d409fb0 code: removed unused function declaration 2020-07-10 03:37:29 +10:00
itsmattkc 343c39d66d nodeparamview: preserve cursor position when text is edited 2020-07-10 02:41:35 +10:00
itsmattkc 911b6c2887 textnode: added parameters for default font and font size
Allows text node to be used without having to write HTML (but allows
the option for HTML still).
2020-07-10 02:40:52 +10:00
itsmattkc 0b4a9f4650 timeline: fixed bug that caused I-beam to render incorrectly 2020-07-10 02:40:23 +10:00
itsmattkc 8e1be4a3ff nodeparamviewwidgetbridge: implemented editing font parameters 2020-07-10 02:40:09 +10:00
itsmattkc a4acf5f99e nodes: hash strings as their value rather than the struct
Erroneously hashed strings incorrectly so the actual string contents
weren't what was being hashed.
2020-07-10 02:39:09 +10:00
itsmattkc 8e75432304 project/timeline: save timeline tracklist state in project file 2020-07-08 19:19:32 +10:00
itsmattkc af69f157a3 timeline: improved beam tool and its derivatives 2020-07-07 18:43:18 +10:00
itsmattkc a239fa0e2f timeline: fixed some ripple tool behavior bugs 2020-07-07 18:06:49 +10:00
itsmattkc 6c3313721b Merge branch 'master' of https://github.com/olive-editor/olive.git 2020-07-07 13:18:27 +10:00
itsmattkc cb93b6bfa1 text: keep text confined within text-safe area 2020-07-07 13:16:41 +10:00
itsmattkc 919314cce8 renderer: improve thread safety
Since we share render backends between the viewer and cache tasks now, we
should ensure the render backend is thread safe.
2020-07-07 13:16:25 +10:00
itsmattkc a45f514f68 renderer: share render backend for auto-cache tasks
Since auto-cache events start and stop fairly frequently (and are somewhat
heavy to create/destroy), we can save a lot of cycles over time by sharing
the same backend between them all.
2020-07-06 14:22:17 +10:00
itsmattkc 936d077077 project: use relative filenames if absolute don't exist 2020-07-06 14:03:22 +10:00
itsmattkc 3e9f98e230 Merge branch 'master' of https://github.com/olive-editor/olive.git 2020-06-26 00:22:03 +10:00
itsmattkc c324de804c audiomanager: create and delete future watchers when necessary 2020-06-26 00:21:34 +10:00
itsmattkc 7523db099b cmake: use improved FindOpenEXR module 2020-06-26 00:21:12 +10:00
itsmattkc e064d37988 mainwindow: check for connected items before saving
Fixes segfault when saving an empty project/a project with no sequence
open.
2020-06-24 02:14:51 +10:00
itsmattkc b0a5d4f4c3 parampanel: set input after timestamp
Default TimeBasedWidget behavior is to jump to the playhead, but we want
the CurveView to zoom fit on open instead. So we set the input after the
timestamp to make this behavior possible.
2020-06-24 01:36:04 +10:00
itsmattkc d31c373bd0 curveview: transform times to target for zoom fit 2020-06-24 01:29:57 +10:00
itsmattkc 8bf653925f curve/timeline: improved user interface behavior
* Implements "auto-fit" setting for curve view and sets it on open.
* Improves scroll zooming on all TimelineViewBase derivatives.
* Improves code sharing for better maintenance.
2020-06-23 05:25:34 +10:00
itsmattkc e681b87988 curve/param/panels: leave curve panel open and have option for timebasedwidget to auto-set timebase 2020-06-23 05:22:58 +10:00
itsmattkc 2207a915a6 viewernode: check if timebase/size have actually changed before signalling
Minor optimization.
2020-06-23 05:15:48 +10:00