Commit Graph
483 Commits
Author SHA1 Message Date
itsmattkc cabcd49b25 renderer: copy cache path before render to avoid race conditions 2020-09-05 18:48:54 +10:00
itsmattkc f86ab6a965 renderer: prevent infinite loop occurring on some time invalidations 2020-08-26 17:38:16 +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 f3f81eb2be ffmpeg: store divided frames in memory cache
Since users will most likely be working with a divider most of the time,
there's no reason to waste memory space with undivided frames considering
the dividing process is quite fast.
2020-08-18 04:55:23 +10:00
itsmattkc 0f3a60aa49 cache: save disk cache index on a regular interval in case of crashing
DiskManager tries to keep track of all files made across sessions in an
index, but the index was only saved on close. This meant if the program
crashed (not an uncommon occurrence at the moment), it would "forget" about
any files it had made that session.
2020-08-16 17:08:04 +10:00
itsmattkc b3e30b8daf renderer: clear auto-cache tasks when disconnecting viewer node
Fixes segfault that could occur when switching sequences.
2020-08-16 16:50:23 +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 03e33227b3 cache: moved disk settings to a separate dialog
This way the cache settings can be accessed in both ProjectProperties and
Preferences.
2020-08-10 20:30:11 +10:00
itsmattkc e21b68be53 renderer: queue hash setting from another thread
Fixes race condition that caused many segfaults.
2020-08-10 02:09:24 +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 901f1001af renderer: improved memory management
Clear up more memory when it isn't used for a while.
2020-08-09 14:03:11 +10:00
itsmattkc edeeed49ba various: enabled config saving 2020-08-08 02:44:39 +10:00
itsmattkc 1b2b5d3b75 diskmanager: save configured disk cache location 2020-08-07 19:00:09 +10:00
itsmattkc d85089f71a cache: improved setting manual cache path on a per project basis 2020-08-07 13:41:09 +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 fa02430d48 cache: reimplemented disk manager to enforce limit in preferences 2020-08-06 01:30:51 +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 07a53d45f0 renderer: updated audio waveform generated for new cache overhaul 2020-08-05 22:32:24 +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 fb05594b50 various: allow setting footage aspect ratios
We had support for detecting aspect ratios and respecting them in the
render, but this allows people to not only see the aspect ratio in use,
but also override it with their own.
2020-07-25 00:58:01 +10:00
itsmattkc ce486f6b84 cache: null check on saving frames
Includes a warning since I'm not sure yet if this is problematic behavior
or not yet.
2020-07-23 18:46:47 +10:00
itsmattkc 867e3729f4 renderer: check array parents/children when traversing the graph for duplicates
Fixes bug where nodes would be updated out of order and segfault if they
no longer existed.
2020-07-23 18:45:59 +10:00
itsmattkc 70b21d6c2a renderer: always prioritize array parent over children
Fixes common segfault.
2020-07-19 12:03:31 +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 e67b801a50 renderer: treat buffer inputs as texture inputs when appropriate
Fixes bug where a null buffer would not set a null texture.
2020-07-14 22:32:27 +10:00
itsmattkc cabf581a20 code: fixed typo
Not sure how this got here but ok
2020-07-10 18:45:45 +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 0f9d409fb0 code: removed unused function declaration 2020-07-10 03:37:29 +10:00
itsmattkc 919314cce8 renderer: improve thread safety
Since we share render backends between the viewer and cache tasks now, we
should ensure the render backend is thread safe.
2020-07-07 13:16:25 +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 a94caa5737 export: fixed bug that broke audio on export 2020-06-19 20:25:49 +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 b2a3cede2c renderer: re-use the same opengl instance for all background rendering
Previously the OpenGL instance was tied to each render/cache task,
creating and destroying it each time one started and stopped. This was
completely unnecessary since the instance holds no state and can be
shared by all of the render tasks without having to expensively start
a new one.
2020-06-19 17:06:14 +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 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 66b63535a3 renderer: null check before hashing
Fixes segfault.
2020-06-16 15:16:52 +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 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 49cec970f2 Merge pull request #1165 from sobotka/ocio-fixes
Hopefully OCIO fixes
2020-06-14 03:59:28 +10:00
Troy James Sobotka 7218209e6e Update config.ocio
Fix mistake in the allocation variables that
mangled up the transforms.
2020-06-12 12:02:31 -07: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 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 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