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
9ff9817b95
cache: use render job times to synchronize cache
...
Ensure old inaccurate jobs are never prioritized over current jobs.
2020-06-04 16:48:23 +10:00
itsmattkc
017271b909
cachetask: write silence if no samples are returned
...
Fixes segfault trying to access a null sample buffer.
2020-06-01 04:45:45 +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
4b8ac6a414
rendertask: ensure frames get sorted in chronological order
...
Previous commit broke the sorting system. This commit restores it.
2020-05-30 02:03:13 +10:00
itsmattkc
6d16ac9f50
rendertask: optimized hash matching and grouping
...
Significantly improves speed of matching already cached frames.
2020-05-29 16:37:58 +10:00
itsmattkc
6638edb761
rendertask: ensure backend nodes are copied the main thread
...
May not be a permanent solution, but should prevents race conditions for
the time being.
2020-05-29 15:25:18 +10:00
itsmattkc
a0dec75f2b
renderer: ensure offscreen surface is created in main thread
...
Fixes render crash on some platforms.
2020-05-27 04:05:01 +10:00
itsmattkc
14ac1ada6e
various: adding files missing in last commit
...
Oddly some files didn't commit previously. This commit adds those.
2020-05-27 03:24:37 +10:00
itsmattkc
3e3cacbc85
various: update Qt code deprecated in 5.15
...
- Replaces QLinkedList with std::list as recommended by Qt docs.
- Replaces QWheelEvent::delta() with QWheelEvent::angleDelta(). This
should also benefit trackpad behavior.
2020-05-27 02:54:05 +10:00
itsmattkc
0c7b3e1761
cache: streamlined audio into cache task
...
Since we always cache audio, it makes sense to lump it into the same auto-cache
task we use for everything else.
2020-05-27 00:09:09 +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
4c62dd3708
rendertask: automatically re-match existing hashes
...
Major optimization for frames that have already been cached.
2020-05-24 18:13:18 +10:00
itsmattkc
4f21a930dd
tasks: added elapsed/remaining time displays for all tasks
2020-05-24 18:10:08 +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
d5766489e4
export: fixed audio exporting with new renderer system
2020-05-21 02:18:52 +10:00
itsmattkc
87e7564222
cache: heavily reworked exporting for new system
...
Also cleans up cache in general and moves it to the Task infrastructure.
2020-05-19 23:35:17 +10:00
itsmattkc
cb383d760b
tasks now emit floats rather than integers
...
Simplifies code for tasks.
2020-05-19 02:44:38 +10:00
itsmattkc
b9cd83eff1
task: massively simplified task system
...
Made various changes and fixes to the task system:
- Tasks are built around QtConcurrent rather than QThread. Reduces
code complexity significantly.
- Task error reporting is now streamlined in both TaskManager and
TaskDialog.
- Moved ProjectImport/Save/LoadManager to the app/task folder
2020-05-19 02:44:32 +10:00
itsmattkc
558773538d
cache: fixed audio with new system
2020-05-18 17:16:28 +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
6754feb2f6
proxy: began work towards creating proxy from video
2020-05-03 17:09:52 +10:00
itsmattkc
e4c3b6bf7b
renderer/decoder: simplified audio PCM transcode
...
Turned the two-step PCM transcode into one step and simplified/removed much of
the unnecessary infrastructure that supported it. This makes the code cleaner
and generally improves the code paths.
2020-05-03 16:07:10 +10:00
itsmattkc
2eb03bf386
various: removed constructor.h include
2020-04-14 00:53:25 +10:00
itsmattkc
f08734d18e
index/confirm tasks: these tasks no longer need to open the decoder to perform said tasks
2020-04-11 17:36:16 +10:00
itsmattkc
1aa87cbda6
various: encapsulate all code in the olive namespace to avoid name collisions
...
Large-scale code cleanup. Also adds a license to the top of all files that were
missing it.
2020-04-06 15:29:53 +10: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
02909c6ba9
statusbar: added basic task UI feedback without requiring the task
...
manager to be open
2020-03-03 01:50:51 +11:00
itsmattkc
866db58965
taskmanager: use deleteLater rather than delete
...
This doesn't solve a known issue, but is probably cleaner/more robust code
regardless.
2020-02-23 11:45:16 +11:00
itsmattkc
b0c9711974
ffmpegdecoder: fixed double mutex lock
...
Error() would call Close() getting stuck in a double mutex lock that could
stall workers. This commit fixes that.
2020-02-21 20:04:36 +11:00
itsmattkc
f769e88e6d
taskmanager: restore one task per thread at idlepriority
2020-02-21 14:21:32 +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
e68e89c40b
renderer/decoder: use same background mechanism to conform audio as well
2020-02-19 16:45:34 +11:00
itsmattkc
77de011509
cmake: added ConformTask source files
2020-02-19 12:46:05 +11:00
itsmattkc
4bcbe290f4
task: Created ConformTask so audio conforming can be done as a background
...
process
2020-02-19 12:44:29 +11:00
itsmattkc
53551246da
decoder: signal indexing progress
...
Better UI interactions, actually shows the progress of the index function in
the task manager now.
2020-02-19 12:19:42 +11:00
itsmattkc
55cdd47933
indextask: fixed typo and pass cancelled signal to Decoder::Index()
2020-02-17 02:14:32 +11:00
itsmattkc
c0d42c4fda
taskmanager: fixed typo and restricted taskmanager to one task at a time for now
2020-02-17 02:11:04 +11:00
itsmattkc
fd49b6eb55
taskdialog: created ProgressDialog-based dialog for modal tasks
2020-02-17 02:05:40 +11:00
itsmattkc
21755c7f20
taskmanager: ensure task is finished before deleting it
...
Fixes race condition that could result in a segfault if a Task hadn't emitted
Finished() before it was destroyed by TaskManager.
2020-02-16 13:01:38 +11:00
itsmattkc
080fe22969
taskmanager: made AddTask() a slot so it can be queued from other threads
2020-02-16 10:29:11 +11:00
itsmattkc
e93c3d4ce4
taskmanager: try to start next waiting tasks when a task finishes
...
Fixes bug where tasks would get stuck indefinitely.
2020-02-16 10:28:34 +11:00
itsmattkc
3efbcc28ef
ffmpegdecoder: improved index reliability
2020-02-15 23:39:33 +11:00
itsmattkc
653709dc84
try to index media immediately on import
...
Since indexing is supplemental, it can be made a background task that can occur
at more or less any time. So we run it as soon as possible.
2020-01-17 03:58:29 +11:00
itsmattkc
75a9291cd2
refactored import function for greater robustness
...
The import function was written early on in the rewrite as a multithreaded
background task that was considered somewhat flawed. While it worked for the
most part, there were possibilities of race conditions that could have
potentially been fatal, particularly since media could theoretically be
deleted while the import/probe tasks were running in the background.
With the save/load functions coming in, it became even more complicated as
projects may include metadata about the footage that can't be implemented
easily when the footage is imported/probed in the background. Making importing
a modal task fixes all of these issues, it's still done in a background thread
to not hang the GUI thread, but the GUI thread can be briefly "paused" in a
user friendly way so that all these functions can be safer.
2020-01-15 15:19:14 +11:00
itsmattkc
61c60e00d6
various small code cleanups and improvements
...
Largely refactoring work to make the code somewhat nicer to work with.
2019-12-26 19:00:08 +11:00
itsmattkc
401de26733
updated other classes for the previous commit's file moving
2019-12-21 20:07:14 +11:00
itsmattkc
4b2f4bcdb2
fixed occasional import segfault
2019-09-08 12:18:27 +10:00