Commit Graph
476 Commits
Author SHA1 Message Date
itsmattkc 43d0129004 renderer: unqueue deleted node inputs
Fixes segfault when renderer tries to update from a since deleted node
input.
2020-09-05 19:49:34 +10:00
itsmattkc f0928814fc track: store height in "units" rather than pixels
Fixes DPI scalability issue if a project ever moved from a display with
one DPI to another.
2020-08-22 00:23:46 +10:00
itsmattkc 9aabde303e nodeview: added arrows to indicate a node can be expanded
Minor UI detail. Also slightly increases the size of node items and adds
"short names" to the video input and audio input nodes.
2020-08-21 15:15:39 +10:00
itsmattkc f6760386ce renderer: improved handling of pixel aspect ratio and footage cache 2020-08-21 14:43:13 +10:00
itsmattkc 75c3a37c17 removed speed/duration dialog
This is the first step in what will eventually be keyframable time
remapping. The speed/duration dialog was a holdover from 0.1 and we can
probably do better here.
2020-08-19 17:42:52 +10:00
itsmattkc 5f48bdf0e7 viewer: don't update the length until the operation is done
Prevents the frame/audio caches from being truncated unnecessarily during
an operation that ultimately doesn't change the length.
2020-08-18 15:06:44 +10:00
itsmattkc 383c0b6620 node: hash based on stream timebase units 2020-08-16 17:31:56 +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 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 ea7289805a timeline: re-enable length changed signal
Fixes issue where length wouldn't update sometimes.
2020-08-10 14:04:30 +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 edeeed49ba various: enabled config saving 2020-08-08 02:44:39 +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 ce353ccbed timeline: various work to improve timeline behavior, particularly when dealing with transitions 2020-07-22 18:09:57 +10:00
itsmattkc c301f71d1a Merge branch 'master' of https://github.com/olive-editor/olive 2020-07-19 12:11:47 +10:00
itsmattkc d54d59fac6 transition: remove alpha channel requirement 2020-07-19 11:33:51 +10:00
Thomas Wilshaw f4da255b35 Attempt to fix CI build errors. 2020-07-17 17:35:29 +01: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 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 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 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 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 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 cb93b6bfa1 text: keep text confined within text-safe area 2020-07-07 13:16:41 +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 2207a915a6 viewernode: check if timebase/size have actually changed before signalling
Minor optimization.
2020-06-23 05:15:48 +10:00
itsmattkc 65ccac1dfe renderer: fixed bug that would render frames even after hash matching
Also enables the -Wshadow GCC warning to warn against the code bug that
caused this issue (and has caused other issues like it in the past).
2020-06-19 20:25:05 +10:00
itsmattkc ab74c1579e mathnode: temporarily disable identity matrix detection
This code was faulty and needs extra functionality elsewhere to
actually work correctly.
2020-06-19 02:44:26 +10:00
itsmattkc 57f858dd92 nodetable: correctly update with time 2020-06-18 16:30:57 +10:00
itsmattkc a871c5081b nodeparamtable: bare bones table view for node inputs 2020-06-17 17:48:07 +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 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 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 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 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 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 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 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 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 593316876f track: save and load track heights to and from project files 2020-06-05 16:12:00 +10:00
itsmattkc b143b39869 track: provide control over invalidation when setting length 2020-06-05 15:21:11 +10:00