itsmattkc
a9a13c4b0c
framehashcache: remove code for saving integer-based frames to cache
...
Since we don't allow non-float cached frames now, there's no need to have
this code complicating the codebase.
2020-06-10 14:12:26 +10:00
itsmattkc
9095dfa463
project: replaced proxy with pre-cache
...
Removed proxy task and replaced with a true honest-to-god pre-cache for
footage. This footage is pre-cached to a sequence and therefore 100% ready
for use in it once the task is done.
2020-06-08 23:17:51 +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
b9de8ea035
rendertask: include audio in progress signal
2020-06-06 18:24:28 +10:00
itsmattkc
242994c736
rendertask: initialize nb_frames
...
The code path doesn't ever use this value uninitialized, but GCC is unaware
and still presents a warning.
2020-06-05 15:53:07 +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
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