Commit Graph
100 Commits
Author SHA1 Message Date
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 e8c8fedcdb slider: stop ladder drag timer on release 2020-06-18 17:50:28 +10:00
itsmattkc a717742cbc nodetable: show values in separate columns
Works for vector coordinates (e.g. XY, XYZ, etc.) as well as displays
checkboxes for RGB/A. Still non-functional.
2020-06-18 15:07:47 +10:00
itsmattkc 897b9ca3dd statusbar: disconnect old task when connecting a new one 2020-06-18 15:06:07 +10:00
itsmattkc c5dd406ff1 slider: improved ladder usability 2020-06-18 14:11:50 +10:00
itsmattkc 5397457c8d timeline: treat non-primary clicks as non-moving
Fixes bug where drag would get stuck if the user right clicked on the
timeline.
2020-06-18 03:35:59 +10:00
itsmattkc 4b0e6f97f7 Merge branch 'master' of https://github.com/olive-editor/olive 2020-06-17 20:50:21 +10:00
itsmattkc 57eb039b4c debug: print graphics driver in debug log
Might help with debugging GPU issues from users.
2020-06-17 20:50:03 +10:00
itsmattkc e0d27490e7 Merge branch 'master' of https://github.com/olive-editor/olive.git 2020-06-17 19:56:27 +10:00
itsmattkc b456b6b0f6 oiiodecoder: make sure spec is used instead of basetype
Fixed issue with image alpha handling.
2020-06-17 19:53:21 +10:00
itsmattkc a818e17c55 export: made progress on headless export
Still incomplete and unusable, but less so than before.
2020-06-17 18:06:50 +10:00
itsmattkc c3c26a8e24 cache: use openexr directly
OIIO lacks fidelity over OpenEXR's threading. Using it directly gives us
a little more control.
2020-06-17 17:49:54 +10:00
itsmattkc 2261f1147d renderer: catch failure to load pre-cached frame 2020-06-17 17:48:41 +10:00
itsmattkc a871c5081b nodeparamtable: bare bones table view for node inputs 2020-06-17 17:48:07 +10:00
itsmattkc 1b6e9c1c79 viewer: moved nouveau to application launch rather than viewer init
Viewer init was kind of too late since in many cases the sequence
would start caching and crash the app before the user could even read
the message. Moving to the startup makes it clearer from the beginning.
2020-06-17 03:00:00 +10:00
itsmattkc 29d56a1583 timeline: implemented UI indicator for tools like razor and edit 2020-06-16 18:30:00 +10:00
itsmattkc 67ee78ac9a nodeparamview: allow disconnecting nodes by right clicking the "connected to" label 2020-06-16 17:48:10 +10:00
itsmattkc f107c9bba1 nodeview: associated pasted nodes
Prevents nodes being erroneously filtered out.
2020-06-16 17:17:47 +10:00
itsmattkc cadb703ed8 ui: made os integration more universal
ProgressDialog doesn't have to worry about the platform anymore, now
MainWindow will determine what to do or whether to ignore certain progress
indicator functions.
2020-06-16 16:55:11 +10:00
itsmattkc e979ce4d7a nodeview: made an "infinite scroller"
Set scene rect to huge and hid the scrollbars. The node view should be
scrolled with middle click or the hand tool.
2020-06-16 16:31:16 +10:00
itsmattkc 62c23e8ed1 timeline: allow re-labelling clips 2020-06-16 16:30:31 +10:00
itsmattkc 41b04d976c nodes/clips: use node label as clip name and allow changing multiple labels at once
Merges the "clip name" and "node label" into the same entity.
2020-06-16 16:23:05 +10:00
itsmattkc cbbf1c9149 framehashcache: use correct linesize when saving EXR
Fixes stride issues on non-standard frame sizes.
2020-06-16 15:38:23 +10:00
itsmattkc 71fa821e52 nodeview: enforce minimum scale 2020-06-16 15:37:11 +10:00
itsmattkc 5980737742 timeline: ignore subtitle tracks for now 2020-06-16 15:17:21 +10:00
itsmattkc dc86e18eb6 slider: remove old debug info 2020-06-16 15:17:01 +10:00
itsmattkc 66b63535a3 renderer: null check before hashing
Fixes segfault.
2020-06-16 15:16:52 +10:00
itsmattkc 89b3fa33f8 slider: update behavior for usability and qt 5.15 2020-06-16 14:52:53 +10:00
itsmattkc 8d21a2c1ef ffmpegdecoder: restore multithreading 2020-06-16 13:34:49 +10:00
itsmattkc cf17bbc80b viewer: removed unnecessary background cache triggers
This was extremely aggressive and led to cache tasks that would return
even if you cancelled them. This should work a lot better.
2020-06-16 04:07:55 +10:00
itsmattkc f70f266ca0 render: queue audio alongside video
Previously, audio was all queued first and would therefore all have to
finish before any video frames could start caching. No longer! Now they're
queued side by side so users won't have to wait for audio to finish before
their cached frames come in.
2020-06-16 03:49:12 +10:00
itsmattkc 3a4e13a04f Merge branch 'master' of https://github.com/olive-editor/olive.git 2020-06-16 03:10:19 +10:00
itsmattkc 6a4f3f613c rendertask: remove sorting code and calculate duplicate hashes while retrieving
These are two changes that speed up when frames start getting rendered
and processed (particularly for larger scale projects):

* Sorting of time beforehand was done to optimize decoding but is actually
unnecessary since the frames are already sequential when they're retrieved
from the range. As long as we maintain that order, no sorting is required.
This speeds up caching IMMENSELY.

* Evaluate hashes concurrently while retrieving frames. Before, this was
done before any rendering and could therefore delay rendering by several
seconds. Doing them concurrently means frames start rendering almost
immediately and further hashes can be analyzed while we wait for frames to
finish rendering.
2020-06-16 03:07:53 +10:00
itsmattkc 406f61e546 ffmpegdecoder: use last timestamp for initial seek calculations
Fixes bug that would destroy cache performance. Like... just annihilate it.
Like an absolute nuclear holocaust of cache performance.
2020-06-16 02:58:21 +10:00
itsmattkc 41fc50f412 slider: initialize dragged diff to 0
Fixes undefined behavior on first drag of a slider.
2020-06-16 02:51:35 +10:00
itsmattkc 2e3072623a renderer: use qvectors instead of qlists
Should be much more efficient for large-scale projects.
2020-06-16 02:45:16 +10:00
itsmattkc cc463c7c60 viewer: allow temporarily suspending the auto-cache
While the auto-cache will always default to on, there are cases where the
user may not want the viewer to barrel ahead caching something (footage
viewer for instance or if the user is making a lot of changes in a short
amount of time).
2020-06-15 18:28:11 +10:00
itsmattkc 45917cfd29 project: use backslashes on windows
Backslashes are the normal directory delimiter for Windows so Windows users
will likely be more comfortable with this. Also prevents issues where a
filename may appear twice in the "open recent" list for both slash
directions.
2020-06-15 18:20:49 +10:00
itsmattkc 95dbeac8a5 viewer: don't show playback queue warning if past the video's end point 2020-06-15 15:42:49 +10:00
itsmattkc f2ab9839e5 project: save to temp folder first and then overwrite actual file
With this commit, we save to a temporary file first and then cat the end
run a copy to overwrite the source file. If the save somehow fails or the
program crashes mid-save, this will prevent the user's project file from
getting corrupted.
2020-06-15 15:41:24 +10:00
itsmattkc 4c548bc6a5 slider: implemented value ladder
Allows finer control over value changes.
2020-06-14 03:56:18 +10:00
itsmattkc 49cf9f4458 richtextdialog: finalized functionality in dialog 2020-06-14 01:20:21 +10:00
itsmattkc 9a49235e40 addtool: better snapping 2020-06-14 01:20:02 +10:00
itsmattkc 37b7330274 text: added crude basic rich text dialog
To be expanded upon...
2020-06-13 20:04:17 +10:00
itsmattkc 4c14ab6498 add tool: allow adding on a track that doesn't exist yet 2020-06-13 20:03:06 +10:00
itsmattkc 282824ac49 volume: base off math node
Shares code with math node rather than having it twice.
2020-06-13 18:13:07 +10:00
itsmattkc 21e6085c32 project: removed proxy path
The proxy is now a pre-cache, so there are no longer distinct folders
for it.
2020-06-13 13:06:10 +10:00
itsmattkc cb5b201054 nodeviewitem: base highlight color off palette
Improves appearance in light theme.
2020-06-13 13:05:19 +10:00
itsmattkc db8b825876 textnode: implemented vertical align field 2020-06-13 03:42:26 +10:00
itsmattkc 469b1e92d0 nodes: implemented basic text node 2020-06-13 03:01:35 +10:00
itsmattkc 5c5f09a20c renderer: added generate job
For nodes that produce an image on the CPU before sending it to the GPU.
2020-06-13 03:01:23 +10:00
itsmattkc 0c9435c94d frame: implemented set pixel function
Counterpart to Frame::GetPixel()
2020-06-13 03:00:41 +10:00
itsmattkc 209fb536f5 nodeview: when changing selected blocks, temporarily ignore selection change signal until the end
UI optimization.
2020-06-12 23:27:11 +10:00
itsmattkc b28413a2af timelineworkarea: fixed bug where loaded projects would always have an enabled workarea 2020-06-12 23:25:44 +10:00
itsmattkc 0abfdd1b65 timeline: improved context menu for selected clips 2020-06-12 21:55:43 +10:00
itsmattkc 0fd8613bca core: set config defaults before anything else
Ensures media cache folder isn't created in `~/.local/share` root and its
own folder instead.
2020-06-12 17:22:05 +10:00
itsmattkc af5097bf5f nodes: revert shader ID to string
Much easier to manage this way and fixes a compile issue on several
platforms.
2020-06-12 16:02:29 +10:00
itsmattkc 204372170f speeddurationdialog: fixed behavior issues 2020-06-12 14:54:25 +10:00
itsmattkc 23365074f0 samplebuffer: fixed segfault when changing speed 2020-06-12 14:53:27 +10:00
itsmattkc 955d4ce910 opengl: clear ping-pong texture before blitting to it 2020-06-12 03:44:43 +10:00
itsmattkc 7b9764254d math: generate alpha channel only if multiplying a texture by a matrix 2020-06-12 03:44:23 +10:00
itsmattkc 6b7925302f polygon: generate texture with alpha channel 2020-06-12 03:44:07 +10:00
itsmattkc e547d5b116 audioparams: removed debug message
Not really necessary now. Specific situations can always print debug info
if the params are invalid.
2020-06-12 03:32:27 +10:00
itsmattkc c80f72481d viewer: shortened re-cache wait interval 2020-06-12 03:31:49 +10:00
itsmattkc e2e8a6859c renderer: updated audio to work with minor node overhaul 2020-06-12 03:28:43 +10:00
itsmattkc a6a5c113ca nodeinput: added convenience function for determining if a value is expected to change over time 2020-06-12 03:27:52 +10:00
itsmattkc b3d7158e8e matrix: ensure an identity matrix is created if all values are default 2020-06-12 03:27:36 +10:00
itsmattkc 54091549df samplebuffer: added convenience functions for altering sample data 2020-06-12 03:27:14 +10:00
itsmattkc ffebe70a65 audiovisualwaveform: fixed bug that would make all channels the same 2020-06-12 03:27:00 +10:00
itsmattkc bad60fc5f0 audioplaybackcache: no-op if params are invalid 2020-06-12 03:26:34 +10:00
itsmattkc dd7af0e6bd nodes: minor overhaul to functionality
The nodes now have more control over how their accelerated shaders/sample
functions are run, as well as how items are popped off the value tables.
This allows for various optimizations that we didn't have access to before.
2020-06-12 00:54:15 +10:00
itsmattkc 663cf4a020 pixelformat: added convenience functions for determining the format equivalent with and without an alpha channel 2020-06-11 21:27:42 +10:00
itsmattkc 23d92df3c8 nodeviewitem: don't expand if control is held during the double click 2020-06-11 21:27:18 +10:00
itsmattkc aa11fd2d04 viewer: cancel all render tickets when displaying a null texture
Fixes a race condition if a frame is requested shortly before moving to
the end of the timeline.
2020-06-11 21:26:49 +10:00
itsmattkc ccf5d4cece audiovisualwaveform: detect if the start index exceeds the buffer sample count
Fixes segfault.
2020-06-11 21:24:50 +10:00
itsmattkc a9a13c4b0c framehashcache: remove code for saving integer-based frames to cache
Since we don't allow non-float cached frames now, there's no need to have
this code complicating the codebase.
2020-06-10 14:12:26 +10:00
itsmattkc 71ec148e76 renderer: moved all shader code into one solidified function
Makes texture-based optimizations easier when they're all in one place.
2020-06-10 01:54:02 +10:00
itsmattkc 29537fea3c app: don't use hidpi application attribute
This seems to cause issues on various platforms and isn't required a lot of the
time:

* macOS doesn't need this since the HiDPI setting is in the bundle's Info.plist
* Windows doesn't need this, in fact it seems to make fractional HiDPI worse
* Linux... who knows how to get HiDPI working on Linux
2020-06-09 16:18:14 +10:00
itsmattkc 494609410b timeline: when trimming, removing adjacent if its length is reduced to zero 2020-06-09 15:38:47 +10:00
itsmattkc 43513a2b3c Merge branch 'master' of https://github.com/olive-editor/olive 2020-06-09 13:56:34 +10:00
itsmattkc 4b311ea3bf projectexplorer: added unused attribute to parameter that should be used later
Fixes another GCC build issue.
2020-06-09 13:53:51 +10:00
itsmattkc 0f301cfdcc manageddisplaywidget: show colorspaces as well as DVL 2020-06-09 13:53:20 +10:00
itsmattkc f436bab2d5 sequence: initialize values when loading from XML 2020-06-09 13:31:43 +10:00
itsmattkc 6d465c0aaf Merge branch 'master' of https://github.com/olive-editor/olive.git 2020-06-09 13:08:20 +10:00
itsmattkc a18d523b51 projectexplorer: appropriately renamed "proxy" to "pre-cache" 2020-06-09 02:37:11 +10:00
itsmattkc e10b1462ff renderbackend: moved bulk of hashing code to static function so more code has access to it 2020-06-09 02:36:11 +10:00
itsmattkc 2fc1ccebf7 openglproxy: implemented extra function for loading pre-cached frames into textures 2020-06-09 02:35:41 +10:00
itsmattkc 52ca18d5e1 viewer: moved cached frame loading code so that more classes have access to it 2020-06-09 02:35:13 +10:00
itsmattkc 9095dfa463 project: replaced proxy with pre-cache
Removed proxy task and replaced with a true honest-to-god pre-cache for
footage. This footage is pre-cached to a sequence and therefore 100% ready
for use in it once the task is done.
2020-06-08 23:17:51 +10:00
itsmattkc 50b4c1e456 sequence: rather than a static divider in config, default to a heuristically generated one 2020-06-08 15:18:01 +10:00
itsmattkc 430561e2ac sequence: made divider a sequence parameter rather than a viewer parameter
Doing this makes the preview resolution an explicit project setting rather
than a temporary UI setting. This will allow more consistency when caching.
2020-06-08 14:41:35 +10:00
itsmattkc ee3fa529cb audiovisualwaveform: reinterpret cast to char*
Bypasses GCC warning about qfloat16's constructor.
2020-06-08 04:03:24 +10:00
itsmattkc 532af463f0 sequencedialog: extended sequence dialog to include presets
Also includes the ability to make custom presets which negates the need for
setting default sequence parameters in preferences.
2020-06-08 03:12:54 +10:00
itsmattkc b9de8ea035 rendertask: include audio in progress signal 2020-06-06 18:24:28 +10:00
itsmattkc be784591fc timeline: optimized pointer tool ctrl+drop 2020-06-06 17:50:23 +10:00
itsmattkc aaee2ab9ed timeline: vastly improved snapping 2020-06-06 13:59:49 +10:00
itsmattkc 5055c136b6 renderer: clear graph update queue when disconnecting a viewer 2020-06-06 01:02:03 +10:00
itsmattkc 550d30ed8f viewer: rewrote playback code for stability
The viewer playback used to rely primarily on the vsync, which was
extremely smooth, but had issues when there was only audio or the viewer
was hidden. This was bodged by attaching to the audio in these scenarios,
but still not perfect.

Now we run a timer in tandem with vsync for the best of both worlds.
Playback is no longer wholly reliant on vsync, yet the viewer can remain
as smooth as possible using vsync.
2020-06-06 00:20:06 +10:00
itsmattkc bad039e7a9 playbackcache: don't invalidate if the cache has no length
Prevents zero-length invalidations.
2020-06-05 17:21:46 +10:00