Commit Graph
2704 Commits
Author SHA1 Message Date
itsmattkc 17c1493aa7 all time-based panels are now derived from a common base class
Cuts down on a lot of duplicate code between
TimelineWidget/ViewerWidget/CurveWidget/NodeParamView
and TimelinePanel/ViewerPanel/CurvePanel/ParamPanel since they all use similar
time functions.
2020-02-01 19:39:43 +11:00
itsmattkc 5d58479f0a oiiodecoder: fixed erroneous processing of extension_list 2020-01-26 14:43:45 +11:00
itsmattkc 0469fac4a9 node: send invalidatevisible signal through graph
When dragging a value in the UI, we use a "single frame update" because we want
to prioritize the currently visible frame to give visual feedback as soon as
possible. Previously, we generated a single frame InvalidateCache() signal
from the widgets themselves, but this had the major downside of not necessarily
emitting the time that the viewer was actually showing (due to either node time
transformations or times differing between the effects panels and the viewer
panels). Now, we send a different signal that viewers can handle themselves to
update the time that they're currently showing. This means the fast updating
will work no matter how many viewers are connected at whatever time each viewer
is set to.
2020-01-26 14:16:22 +11:00
itsmattkc ce17d94b12 timeline: don't show speed dialog if no blocks are selected
Prevents segfault opening SpeedDurationDialog with an empty clip list.
2020-01-26 13:37:47 +11:00
itsmattkc f068c425d2 viewer: provide UI to set preview resolution
Previews don't need to be rendered full resolution, particularly since the
preview is hardly ever 1:1 size of the sequence. The functionality to render
at lower resolutions already existed, but there was no UI for it. This commit
implements UI to set the resolution divider on the viewer.
2020-01-26 13:27:06 +11:00
itsmattkc e39e1002f7 travis: use export with upload description env 2020-01-26 12:49:33 +11:00
itsmattkc 8c0dfb6875 imagestream: fixed segfault when changing a project's default input colorspace 2020-01-26 12:22:30 +11:00
itsmattkc 840b41256a travis: use native xenial OIIO package rather than PPA
Now that we support OIIO 1.x, we don't need to use a PPA to install OIIO 2.x on
Xenial. The advantage of this is:

1. Not having to maintain an OIIO PPA.
2. Not messing up anyone's system if they have software installed that's been
linked with OIIO 1.x and then are forced to install over it with OIIO 2.x.
2020-01-26 12:01:53 +11:00
itsmattkc 490a634473 oiiodecoder: fixed segfault caused by some OIIO decoders if they received
unexpected data

When "probing" footage, Olive runs it past all of its decoders until one
responds that it can decode this file. However this caused issues when some
OIIO decoders would erroneously pick up incompatible files, try to read them
and segfault the entire app (notable OpenJPEG with MPEG-4 and RLA with WAVE
audio). We now use the file extension to check with OIIO if it "should" be
compatible before actually testing if it is.

This is not a "perfect" solution (i.e. someone could recreate the segfault by
renaming an MPEG-4 file to an image extension like .JPG), but is probably as
much as can be done Olive-side and should filter out all segfaults under normal
circumstances.
2020-01-26 11:54:49 +11:00
itsmattkc 6bef94b3e2 qt: fixed strange UI issue where hidden floating dock widgets would show as
transparent cuts through the main window on linux

For some reason, setting not visible *after* setting floating would cause this
issue. The other way around does not.
2020-01-26 11:38:24 +11:00
itsmattkc 8b0c7edfec OIIO: added support for OIIO 1.x
OIIO 2.x uses std::unique_ptr while 1.x uses raw pointers. Olive can now handle
both, manually destroying the raw pointers when necessary if running on OIIO
1.x.
2020-01-26 11:33:45 +11:00
itsmattkc 05c25c8713 CI: attempt to set warning for continuous build 2020-01-25 21:46:32 +11:00
itsmattkc 0e82ec600d keyframes: implemented same single frame strategy on bezier control points 2020-01-25 18:00:35 +11:00
itsmattkc b713ab47eb keyframes: only update active frames even from curve and param editor
When adjusting a slider, keyframe time, or curve value, it is undesirable to
re-cache the entire affected area while the user is still dragging UI objects.
Since the video is unlikely to be playing, the priority must go to the
currently active frame so the user gets visual feedback on the rendered image
as soon as possible. This was implemented in some areas, but this commit should
have that functionality in all areas.
2020-01-25 17:51:34 +11:00
itsmattkc 6f3ea35d9a CI: adjusted travis hash naming and moved appveyor script 2020-01-25 17:07:41 +11:00
itsmattkc 80c48c7633 block: fixed bug that broke single frame updating from a slider
Optimization that only invalidates cache when the user has stopped sliding to
keep the UI responsive.
2020-01-25 17:01:21 +11:00
itsmattkc f5fe87d959 track: reimplemented invalidate cache block
Optimizes working in the timeline by only invalidating cache when necessary.
2020-01-25 16:38:18 +11:00
itsmattkc 7bb8da8d79 node: rewrote problematic GetExclusiveDependencies() function
Function would erroneously pick up nodes that weren't actually dependencies.
2020-01-25 16:37:28 +11:00
itsmattkc 420e01002e dialogs: fixed regression that broke audio 2020-01-25 13:40:23 +11:00
itsmattkc 3f85ce8a7a diskmanager: clearing disk cache at runtime will correctly signal renderers
Clearing the disk cache in the preferences will correctly communicate to
renderers that those frames are now deleted.
2020-01-25 12:18:46 +11:00
itsmattkc c26070bfb5 appveyor: set TRAVIS_COMMIT for upload.sh 2020-01-25 00:49:04 +11:00
itsmattkc 3cac4dfb51 appveyor: use skip_tags to skip continuous 2020-01-24 14:47:40 +11:00
itsmattkc ca63e6ff89 appveyor: don't build continuous and follow redirects when downloading 2020-01-24 13:12:14 +11:00
itsmattkc 6a6587d3e3 appveyor: force locale to make grep work 2020-01-24 12:57:57 +11:00
itsmattkc d56f425d9c travis: cache brew packages to save time on mac builds 2020-01-24 12:31:43 +11:00
itsmattkc f8ad15013a appveyor: exit script on compile failure 2020-01-24 12:05:14 +11:00
itsmattkc 149d125e39 msvc: updated code for higher warning level 2020-01-24 12:00:55 +11:00
itsmattkc 66ad2749af travis: fixed broken if statement 2020-01-24 10:20:56 +11:00
itsmattkc e5d6395a4f travis: fixed syntax error 2020-01-24 10:10:15 +11:00
itsmattkc 5d1b379cb8 cmake: use high warning level in msvc 2020-01-24 01:37:06 +11:00
itsmattkc a629b1839d rendercanceldialog: pass through qshowevent 2020-01-24 01:36:52 +11:00
itsmattkc da2597610d CI: test artifact system 2020-01-24 01:13:03 +11:00
itsmattkc a3c932693a exportdialog: use wait for close code from previous commit when closing the
export dialog
2020-01-22 19:51:57 +11:00
itsmattkc 24f7eeb210 renderer: implemented function to wait for workers in the main thread
The workers run in separate threads meaning if any significant change is made
(e.g. parameters changing, or even closing the program), these workers may still
be mid-render. This is particularly problematic when closing since the nodes a
worker is rendering may be deleted mid-render. Render backends now have a
function that pauses the main thread (but starts a second event loop so the UI
isn't frozen) until the worker threads are all finished. This way, massive
changes can be made safely without race conditions.
2020-01-22 17:11:17 +11:00
itsmattkc fdbaa75dff renderer: allow parameters to be changed mid-session 2020-01-22 14:05:37 +11:00
itsmattkc 8932a5abeb preferences: allow users to set the default still image length 2020-01-21 14:31:45 +11:00
itsmattkc 5d4535b06d travis: use libopenimageio2-dev package 2020-01-21 03:03:01 +11:00
itsmattkc 80d684870f travis: added opengl devel 2020-01-21 02:58:37 +11:00
itsmattkc 868a7d33ed Merge branch 'master' of https://github.com/olive-editor/olive 2020-01-21 02:48:46 +11:00
itsmattkc f4567a9a5b travis: added appropriate linux dependencies 2020-01-21 02:48:22 +11:00
itsmattkc 28d0aecd0e openglcolorprocessor: delete texture when context is about to be destroyed 2020-01-20 16:09:29 +11:00
itsmattkc 7a973b9b47 appveyor: use package cache libs 2020-01-20 06:40:50 +11:00
itsmattkc cfff198503 Merge branch 'version-from-cmake' of https://github.com/eszlari/olive into eszlari-version-from-cmake 2020-01-20 06:07:46 +11:00
itsmattkc 7c9c670b00 appveyor: fixed various issues with win64 builds 2020-01-20 05:48:43 +11:00
itsmattkc c0300371c7 ffmpegdecoder: fixed flawed debug line 2020-01-20 04:58:39 +11:00
itsmattkc 6eab464abb appveyor: create windows installer 2020-01-20 04:48:10 +11:00
itsmattkc d706bef0a1 appveyor: create deployment package 2020-01-20 04:41:56 +11:00
itsmattkc 562891c391 renderer: handle ffmpeg returning a zero aspect ratio
We try to handle aspect ratios in metadata (e.g. stretching 1440x1080 videos
out to 1920x1080 when requested), and FFmpeg will usually return a 1/1
aspect ratio even if it can't determine an aspect ratio. However, as mentioned
in the documentation, sometimes it returns a 0/0 aspect ratio when it can't
determine an aspect ratio, which we didn't handle and would lead to the code
allocating a buffer with a 0px height. This commit handles both 1/1 and 0/0
aspect ratios in accordance with the FFmpeg documentation.

Reference: https://www.ffmpeg.org/doxygen/4.0/structAVFrame.html#a62f9c20541a83d37db7072126ff0060d
2020-01-20 04:07:42 +11:00
itsmattkc cd06b2f4ac rational: validate values when constructed with AVRational
`rational` is supposed to "fix signs" and "reduce" whenever its values are set,
but I neglected to do this when its values were set by an AVRational. Now it
will do so on both.
2020-01-20 04:07:09 +11:00
itsmattkc 649ee04eef appveyor: acquire ffmpeg from zeranoe and include 2020-01-20 03:33:17 +11:00