Commit Graph
124 Commits
Author SHA1 Message Date
itsmattkc 4c9863a696 implement audio device to pull directly from renderer 2021-09-25 12:44:58 -07:00
itsmattkc 0b205ece9c cache: improved code flow 2021-09-23 00:16:05 -07:00
itsmattkc 438cce1ce5 widget: use rational for internal playhead value
Fixes #1688
2021-08-02 10:55:01 -07:00
itsmattkc 310fd3541a various: greatly simplified job times
Hopefully this doesn't break everything
2021-07-11 23:33:21 -07:00
itsmattkc ae3393f031 opengl: use shared contexts and downgrade to ES 2.0 (BIG CHANGE)
If you run into new OpenGL issues, this is likely the commit that caused it.
I've tested this on as many systems as I have access to (including AMD, Apple,
Intel, and NVIDIA GPUs with a mixture of Windows, Linux, and macOS) and it
appears to work fine, however we all know how unpredictable GPUs can be.
This should help increase GPU performance and compatibility.

Squashed commit of the following:

commit fa3c0ac7c469aebe2941a803736bdc06cdd5a2d8
Author: itsmattkc <itsmattkc@gmail.com>
Date:   Thu May 27 13:17:44 2021 +1000

    viewer: updated pixel sampling for shared contexts

commit 9334261da235f09cb67b193c5bb6169abd7a95f7
Author: itsmattkc <itsmattkc@gmail.com>
Date:   Thu May 27 13:12:39 2021 +1000

    pixelsampler: show color preview box

commit dacd9be6971c5c0312ae45c8db349d47910a80dd
Author: itsmattkc <itsmattkc@gmail.com>
Date:   Thu May 27 12:43:32 2021 +1000

    renderer: interlace on GPU

commit 074cea06cb87e9fdc4e8ea6b09587be6df296057
Author: itsmattkc <itsmattkc@gmail.com>
Date:   Thu May 27 12:43:14 2021 +1000

    renderer: added texture clear option

commit 5d4f86b4cf1b1dcd3fb8e8c854ffa7f6fb8ca346
Author: itsmattkc <itsmattkc@gmail.com>
Date:   Thu May 27 12:42:12 2021 +1000

    renderer: updated scopes for shared textures

commit 6fad96358d189874cf45f7887b7e13cc2b1603c4
Author: itsmattkc <itsmattkc@gmail.com>
Date:   Thu May 27 11:42:05 2021 +1000

    opengl: fixed edge case

commit 1a19ffb53703ac6f30ed210f6d8eb5fc4b7b0f2d
Author: itsmattkc <itsmattkc@gmail.com>
Date:   Thu May 27 10:56:13 2021 +1000

    opengl: fix deinterlace shader

commit 085961aa39cca90ebf51b919a78ef07a4882f0e1
Author: itsmattkc <itsmattkc@gmail.com>
Date:   Thu May 27 10:08:40 2021 +1000

    opengl: downgrade to ES 2.0

    With half-float/float/3D extensions, this should be doable

commit ea1ab45cbcf5e017dfd0d8f28b231ff3255dfe92
Author: itsmattkc <itsmattkc@gmail.com>
Date:   Thu May 27 10:06:59 2021 +1000

    renderer: fixed mutex deadlock

commit ecc2f08b16f03421870c5b61625ecd26f2f96582
Author: itsmattkc <itsmattkc@gmail.com>
Date:   Wed May 26 21:28:13 2021 +1000

    opengl: fixed shared contexts

commit 261c689ea8089463155cf11b9ab15aa3f879f439
Merge: bfd4338a 91c88b1c
Author: itsmattkc <itsmattkc@gmail.com>
Date:   Wed May 26 19:52:00 2021 +1000

    Merge branch 'master' into shared-contexts

commit bfd4338aaa3b09b6fbb7717c637face8d5490721
Author: itsmattkc <itsmattkc@gmail.com>
Date:   Wed May 26 18:52:38 2021 +1000

    viewer: remove debug line

commit 45868d8a396181bf81c24b92a1ac5ce9ffed3426
Merge: 642f8e9d d0bd5e21
Author: itsmattkc <itsmattkc@gmail.com>
Date:   Wed May 26 17:21:48 2021 +1000

    Merge branch 'master' into shared-contexts

commit 642f8e9df7d7d1a9ed4202d428f4d968ff668552
Merge: 861e5b89 4de0a727
Author: itsmattkc <itsmattkc@gmail.com>
Date:   Wed May 26 17:01:38 2021 +1000

    Merge branch 'master' of https://github.com/olive-editor/olive into shared-contexts

commit 861e5b89a38c281897dc44b20e3587d39c4f808c
Merge: 472598a7 ef31c3fb
Author: itsmattkc <itsmattkc@gmail.com>
Date:   Wed May 26 14:28:21 2021 +1000

    Merge branch 'master' into shared-contexts

commit 472598a740a095aa43a4aad5680dd5abcf453a4c
Author: itsmattkc <itsmattkc@gmail.com>
Date:   Fri May 14 16:29:35 2021 +1000

    attempt at sharing contexts
2021-05-29 20:02:45 +10:00
itsmattkc 964129bb08 viewer: further improvements to auto-cache logic 2021-05-09 18:15:56 +10:00
itsmattkc f3c3b2eecf viewer: added default parameter
Minor code enhancement
2021-05-07 16:26:02 +10:00
itsmattkc b82e616124 previewautocache/viewer: improvements to cooperation between cache and viewer 2021-04-30 00:59:51 +10:00
itsmattkc 8a850dac9f viewer: smarter pre-queuing 2021-04-29 23:56:42 +10:00
itsmattkc bd93115e6e viewer: don't queue frames after the end of the sequence 2021-04-28 18:20:37 +10:00
itsmattkc cdea531d95 viewer: fix timer issues
Should address various viewer playback lag issues.
2021-04-27 01:22:58 +10:00
itsmattkc 50644b8e10 viewer: implemented path to show empty frame
Mild UI improvement.
2021-04-22 11:50:24 +10:00
itsmattkc 77d4b18a60 updated copyright year for 2021 [skip ci] 2021-04-17 18:56:50 +10:00
itsmattkc 429442c0ea viewer: restart audio if validated during playback
Fixes #1566
2021-04-14 11:20:02 +10:00
itsmattkc 4021a7166d viewer: keep track of which screens have full screen viewers on them
Fixes #1307
2021-04-08 22:37:38 +10:00
itsmattkc ea29ffef96 minor refactoring and signalling panel subtitle by node change
Fixes issue where Footage Viewer subtitle wouldn't update when
dropping footage in.
2021-04-08 10:42:13 +10:00
itsmattkc bb32048c65 use frame rate and timebase less interchangeably 2021-04-07 13:08:25 +10:00
itsmattkc 898ea25e89 finished merge of viewer and footage 2021-04-06 13:08:56 +10:00
itsmattkc 9be014c0b6 refactored so sequence is again a derivative of viewer 2021-04-05 14:41:59 +10:00
itsmattkc d7c5ac4b44 implement entire project in nodes
Project items are now represented directly in nodes opening up more versatility and possibilities. This is the first iteration of this and will be buggy. Need to test thoroughly.
2021-02-15 21:31:57 +11:00
itsmattkc 374fa3f75c moved some files around for better organization 2020-12-16 19:05:22 +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 0d0766e4fb improved render channel count system 2020-11-15 22:16:40 +11:00
itsmattkc b582843d27 moved things around and started rewriting render backend 2020-10-29 01:36:26 +11:00
itsmattkc f2bd891071 viewer: allow manually switching to the audio waveform view 2020-10-12 00:20:09 +11: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 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 df14c2aaa7 cache: better implemented changing disk cache folders
Not complete yet, but getting there.
2020-08-07 02:31:46 +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 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 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 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 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 2fd897c380 viewer: keep track of viewer length
Useful for determining if the view should be updated from a length change.
2020-06-05 04:31:44 +10:00
itsmattkc cc34f0e251 viewer: ensure view is updated if the cache is shifted
Also moves "ForceUpdate" to a queued connection so it occurs as soon as
the rest of the processing is done. This ensures the viewer isn't updated
too early.
2020-06-03 03:49:39 +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 c907114b17 renderer: optimizing and fixing code paths
Re-introducing some old concepts for the new structure.
2020-05-26 22:40:54 +10:00
itsmattkc efdf56acf8 cache: improved code pathways for cache
Viewers are now more aware of each other and can pause each others' cache tasks
when one of them plays, as well as wait for other viewers' cache tasks to
finish before starting their own.
2020-05-24 18:10:38 +10:00
itsmattkc 89ae6e026f cache: reimplemented auto-caching
Implemented a smarter auto-cache that's context sensitive. Caching will
automatically pause when playback begins or values are being changed and resume
when inactive.
2020-05-24 15:20:35 +10:00
itsmattkc 34fade9d81 cache: attempt to automatically re-match hashes on invalidate
This code is slow and unoptimized. Will require some more work.
2020-05-21 16:49:02 +10:00
itsmattkc cb72736f52 viewer: keep track of request order and ignore old requests
Prevents visual confusion with frames that were requested before the most recent
but arrived after.
2020-05-21 03:09:39 +10:00
itsmattkc 0dc548a97e viewer: fixed bugs in playback queue
Fixed issue that caused playback queue to desync and fallback to much slower
live playback.
2020-05-20 12:52:47 +10:00
itsmattkc 814bbe8c22 fixed various segfaults in decoder and renderer 2020-05-18 02:40:58 +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
itsmattkc 863ae1b913 a first attempt at a new render system 2020-05-14 14:43:03 +10:00
itsmattkc 00248de49c viewer: improved frame queue and linked window
Improves minor issues with frame queue implemented in earlier commit. Also links
ViewerWindow with the queue and a separate timer to make it much smoother.
2020-05-09 16:02:18 +10:00