itsmattkc
f9fc27c6eb
renderer: invalid cache when viewer node changes
...
Ensures frames get re-rendered rather than stuck on the previous viewer node.
2020-03-22 20:03:14 +11:00
itsmattkc
bbb00029e9
Merge branch 'master' of https://github.com/olive-editor/olive
2020-03-19 12:22:10 +11:00
itsmattkc
e5ac72fa9d
Merge branch 'master' into typos
2020-03-19 12:16:09 +11:00
itsmattkc
7771bab5a0
audiobackend: truncate PCM cache size when the length is reduced
2020-03-18 19:08:18 +11:00
itsmattkc
79bc9594b9
audiorenderer: clear tasks waiting for conforms when their ranges are invalidated
...
Minor code optimization.
2020-03-18 15:49:29 +11:00
itsmattkc
50061e4e55
waveformview: show in/out points in waveformview
...
Moved drawing routines to the base class that is used by both TimeRuler
and WaveformView
2020-03-15 18:21:14 +11:00
itsmattkc
78baf7661f
audiorenderer: split audio rendering up into chunks for better parallelism
2020-03-14 23:27:41 +11:00
itsmattkc
7f2dcc8200
waveformview: made UI seekable
2020-03-14 01:57:40 +11:00
itsmattkc
2ac6b601bf
renderer: fixed segfault when no texture is generated
2020-03-13 17:03:27 +11:00
itsmattkc
9e4c79699e
node: split off traversing functions from renderer for usage elsewhere
...
Fixes issue where Viewer node wouldn't pick up correct length if a tracks
weren't in use.
2020-03-13 15:31:15 +11:00
luz.paz
321e7d1606
Fix doxygen and misc. typos
...
Found via `codespell -q 3 -L ba,keypair,numer,uint`
2020-03-10 15:00:56 -04:00
itsmattkc
16b072fa98
various: allow users to override the start and end index of image sequences
...
Also includes various fixes to footage property setting/signalling.
2020-03-09 19:58:42 +11:00
itsmattkc
f2d6d3b32c
timeline/renderer: automatically update timeline view when a visual waveform
...
has updated
2020-03-07 02:44:15 +11:00
itsmattkc
3f043496f3
nodeparam: allowed for dynamic nodeparam property change to affect UI widgets
...
immediately
2020-03-07 02:16:48 +11:00
itsmattkc
c75a0e8498
timeline/renderer: implemented basic waveform display support
2020-03-06 16:18:07 +11:00
itsmattkc
0f5cd40c45
exporter: add ability to cancel exports (including a confirm to cancel if the
...
user closes the dialog mid-export)
2020-03-03 02:37:18 +11:00
itsmattkc
644dd2df30
renderer: fixed bug that would hang exports after 1 x (cores) frames
...
were exported
2020-03-03 01:49:37 +11:00
itsmattkc
8825ff9953
exporter: print extra debugging information
...
Should be helpful for debugging any potential export hangs if there
are any in the future.
2020-03-03 01:48:38 +11:00
itsmattkc
c44c73e376
renderer: handle null frame
...
Minor reliability improvement.
2020-03-02 14:42:20 +11:00
itsmattkc
163ad76456
renderer: rewrote frame compression algorithm
...
This function was noticeably lagging the main thread while caching. The
cause was OpenEXR's internal thread pool competing with our main
thread. Since we have our own system of worker threads, its thread pool
was unnecessary for caching, however for normal playback it was a useful
optimization. Unfortunately OIIO (which we were using to save EXRs)
didn't provide quite enough control over OpenEXR's threading behavior
(only providing control for over the global thread pool and not on
a per-image basis), so for caching we've switched to using OpenEXR
directly. This has noticeably sped up the main thread while causing no
noticeable slowdown to the caching process.
2020-02-29 01:00:17 +11:00
itsmattkc
15ac7f0e9d
renderer: removed old signal that isn't used anymore
2020-02-28 15:49:02 +11:00
itsmattkc
f9a54ebdb6
renderer: remove frames from hash map as well when the diskmanager deletes
...
them
2020-02-27 17:46:49 +11:00
itsmattkc
735e180d5a
pixelservice: use more widely supported OIIO function in image buffer
...
conversions
2020-02-27 17:19:59 +11:00
itsmattkc
273522f28a
diskmanager: don't fail disk cache clear if the files simply don't exist
...
QFile::remove() will return false if the file doesn't exist, but
for our purposes that's as good as the file having been deleted.
2020-02-27 17:19:07 +11:00
itsmattkc
a64f066e2e
renderer: don't upconvert to RGBA if the source image is only RGB
2020-02-27 17:18:39 +11:00
itsmattkc
a0f37ef827
pixelformat: added missing <memory> include for non-windows systems
2020-02-27 15:49:15 +11:00
itsmattkc
d87b4fde8c
renderer/decoder: use divider at the footage level
...
Optimizes rendering if a divider is being used.
2020-02-27 15:47:08 +11:00
itsmattkc
02ce48d0c6
various: pixel optimizations
...
Several things are accomplished in this commit, including:
- Use OIIO instead of our own functions for pixel format conversions
(cleaner code/less for us to maintain)
- Fold all PixelService functions into the PixelFormat class
(cleaner code)
- Moved OpenGL pixel definitions to OpenGL classes and out of the
global classes.
- Add support for RGB buffers as well as RGBA (optimization)
2020-02-27 13:54:38 +11:00
itsmattkc
9585786c4b
exporter: removed unused and problematic function
...
This array this code made was never actually used and in fact the code was
potentially crash-prone.
2020-02-26 14:07:47 +11:00
itsmattkc
78daf9e28a
exporter: updated exporter to function with new render system
2020-02-25 20:03:15 +11:00
itsmattkc
faffbb0f38
renderer: re-use already created textures if the images are known not to change
2020-02-25 14:57:49 +11:00
itsmattkc
9f17a23a42
videorenderframecache: use hash-prefix directory structure
...
Many file systems become inefficient with a lot of files in the same directory.
To solve this we use a semi-arbitrary system to split up all cache files into
several folders to keep things performant.
2020-02-24 12:34:16 +11:00
itsmattkc
2c16bb7c53
renderworker: removed unnecessary declaration
2020-02-24 11:58:38 +11:00
itsmattkc
fceb1e8d3e
viewer: re-render both video and audio if parameters change
2020-02-24 11:57:39 +11:00
itsmattkc
08ed766771
audiorenderworker: fixed potential false positive in assert
2020-02-24 02:02:08 +11:00
itsmattkc
ff516b6202
audiorenderworker: added assert for problematic audio behavior that could
...
corrupt the heap
2020-02-23 22:20:01 +11:00
itsmattkc
48cdb3a6dd
memorymanager: rewrote entire memory management system
2020-02-23 20:29:51 +11:00
itsmattkc
c2d518c681
audiorenderworker: fixed bad memcpy that would corrupt the heap
2020-02-23 13:46:28 +11:00
itsmattkc
813c2e411a
rendercache/decodercache: moved qmutex that was only used by decodercache into
...
decodercache's derived class
2020-02-23 11:46:30 +11:00
itsmattkc
65db108be2
openglcolorprocessor: renamed CreateOpenGL() to Create()
...
We hide ColorProcessor::Create() to create a derived class rather than the
base class and clear up confusion over the two functions existing.
2020-02-22 00:34:55 +11:00
itsmattkc
acb107bd92
Merge branch 'master' of https://github.com/olive-editor/olive
2020-02-22 00:14:20 +11:00
itsmattkc
77c0c9d95a
viewer: ported to openglcolorprocessor for simpler code and fixed bug that
...
snuck in breaking color managed display
2020-02-22 00:13:28 +11:00
itsmattkc
547990b920
ffmpegdecoder/memorymanager: fixed race condition in garbage collection
2020-02-21 23:15:09 +11:00
itsmattkc
e149fc0117
memorymanager: updated system calls for linux
2020-02-21 14:51:47 +11:00
itsmattkc
e74c4c2d1c
global: implemented rudimentary memory manager to use available system memory
...
without forcing the OS to page swap
2020-02-21 14:20:57 +11:00
itsmattkc
2e38e7e3fb
indexmanager: moved files
2020-02-21 10:47:41 +11:00
itsmattkc
be6fbfecdb
videorenderworker: fixed improper QString::arg() usage
2020-02-20 19:44:48 +11:00
itsmattkc
5a070f14de
general: use IdlePriority rather than LowPriority
...
Fixes a number of playback stuttering and general UI lag issues by setting all
background tasks to IdlePriority rather than LowPriority. While it was assumed
LowPriority tasks would always get scheduled below NormalPriority (e.g. main
thread) tasks, it turns out this is not always the case. If the background tasks
start consuming a lot of CPU cycles, the scheduler may use "dynamic scheduling"
to schedule them above the main thread regardless leading to UI lag. This is
apparently the case for all thread priorities apart from IdlePriority, which
is allegedly a special case where threads are *only* scheduled when other
threads aren't busy ensuring the main thread stays responsive.
2020-02-20 17:48:50 +11:00
itsmattkc
054281596e
videorenderer: use qmutexlocker in more cases
...
Minor code cleanup.
2020-02-20 17:48:28 +11:00
itsmattkc
2145efa2a0
decoder/renderer: use memory cache and single decoder to optimize frames for
...
cycles
2020-02-20 15:32:12 +11:00