Commit Graph
187 Commits
Author SHA1 Message Date
itsmattkc 04dd502a40 nodes: bypass invalidate length limit for certain track operations
Fixes #1290
Fixes #1228
2020-11-18 12:56:00 +11:00
itsmattkc 75d4cd899b use hardcoded namespace
The macro defined namespaces confused the hell out of lupdate and more or less broke translations permanently. Looks like the only way we can do it is to have a hardcoded namespace, which goes against my instinct, but honestly how likely is it that we'll change the namespace anyway (I guess forks might want to do it, but that's their problem ;) )
2020-11-17 20:24:42 +11:00
itsmattkc d241090a9f finally updated the copyright year 2020-11-17 20:13:22 +11:00
itsmattkc 1b9bf6d92c switched many QLists for QVectors
Minor optimization
2020-11-16 16:17:43 +11:00
itsmattkc 83cefbd7c7 uhh yeah this might be fubar 2020-11-07 22:44:27 +11:00
itsmattkc 13dd31d5be began rewrite of renderer inner workings 2020-11-06 20:18:10 +11:00
itsmattkc b582843d27 moved things around and started rewriting render backend 2020-10-29 01:36:26 +11:00
itsmattkc 917738d1de Merge branch 'master' into otio 2020-10-22 20:26:16 +11:00
itsmattkc db8d321fa7 project: improved loading and footage importing 2020-10-19 14:41:01 +11:00
itsmattkc 384650e85a tracklist: ensure track indexes are updated when tracks are added/removed 2020-10-15 10:38:36 +11:00
itsmattkc 0d102defab tracks: use node label instead of separate name string 2020-10-10 20:17:25 +11:00
itsmattkc 4204910796 nodes: link edges to IDs rather than objects
Allows code to know whether the connected parameters has been removed or
not.
2020-10-02 16:04:50 +10:00
itsmattkc 2fb7066155 nodes: allow stalling graph signals until an operation is over 2020-10-02 13:25:49 +10:00
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 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 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 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 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 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 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 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 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
itsmattkc de3288893d renderer: move waveform generation into worker and mutex the waveform
Addresses scheduling issues where a backend might be closed (or even
destroyed) before it processes a waveform signal from a worker. Requires
extra multithreading code.
2020-06-05 15:18:14 +10:00
itsmattkc ddf63b39e1 viewer: don't invalidated zero-length ranges
A zero-length range doesn't represent any amount of time and has no need
to actually invalidate anything.
2020-06-05 15:15:59 +10:00
itsmattkc 5eeef76b62 waveform: shift track waveform alongside cache 2020-06-04 23:32:50 +10:00
itsmattkc 0e87762afa waveforms: moved waveform to track rather than block
This is a much more robust and thread-safe system of storing the waveforms.
2020-06-04 18:03:21 +10:00
itsmattkc f2050a0342 timeline: optimized rippling workarea, rippling to in/out, and the ripple tool
Use cache shift functionality introduced in previous commit to optimize
timeline usage.
2020-06-02 04:24:12 +10:00
itsmattkc 11bfe61208 cache: began base implementation of "shifting" the cache
Should be a fairly important optimization to make.
2020-06-02 01:38:12 +10:00
itsmattkc 644fb7cec8 block: fixed buggy cache invalidation behavior when resizing blocks 2020-06-01 17:39:08 +10:00
itsmattkc a62960ecc0 track: block length changed signals until the cache can be invalidated
Optimization, prevents unnecessary processing.
2020-06-01 13:08:08 +10:00
itsmattkc c2e47a296c timeline: heavily optimized and improved nearly all timeline optimizations
Features a lot of timeline-related cache optimizations as well as general
optimizations and improvements in timeline behavior. Should improve
usability significantly.
2020-06-01 04:42:59 +10:00
itsmattkc acee6c5958 timeline: reworked ripple/edit to behavior and documented some track behavior 2020-05-31 01:21:08 +10:00
itsmattkc c1ed84b90e viewer: receive audio invalidation signal
Invalidates and runs cache task correctly even if there are no video
nodes connected.
2020-05-30 02:50:30 +10:00
itsmattkc 8b872e7c29 track: smarter block detection code
Improves on the code before it in reliability (perhaps at the expense of some
cycles).
2020-05-25 22:12:25 +10:00
itsmattkc bf9aa139b1 nodes: improved detection of length changes signalled from the viewer node 2020-05-24 18:11:26 +10:00
itsmattkc 930248ce07 viewer: don't listen for added tracks to invalidate the cache
Fixes segfault when adding new tracks.
2020-05-23 02:32:01 +10:00
itsmattkc 558773538d cache: fixed audio with new system 2020-05-18 17:16:28 +10:00
itsmattkc b74ea1a8ba renderer: reimported audio rendering functions 2020-05-18 12:52:25 +10:00
itsmattkc 814bbe8c22 fixed various segfaults in decoder and renderer 2020-05-18 02:40:58 +10:00
itsmattkc a0f2035240 cache: fixed segfault if a block was ever disconnected 2020-05-16 00:31:24 +10:00
itsmattkc 53a2956350 cache: added cache task that can be manually invoked 2020-05-15 18:36:02 +10:00
itsmattkc 7c2280944b timeruler: reworked and improved cache status 2020-05-15 16:15:24 +10:00
itsmattkc 2039067fdc renderer/viewer: fixed playback and live updates from value changes 2020-05-15 15:02:30 +10:00
itsmattkc 8795e51452 renderer: massive overhaul to move to a vastly simplified threading system 2020-05-15 00:52:45 +10:00