Commit Graph
63 Commits
Author SHA1 Message Date
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
itsmattkc b81d0598b3 minor adjustments to render threads 2019-08-29 18:53:06 +10:00
itsmattkc 1616166fbc worked on thread safety with tasks 2019-08-09 12:31:02 +10:00
itsmattkc c0f6ee534a minor code cleanups 2019-08-09 10:43:14 +10:00
itsmattkc f26eea1620 moved more objects to shared ptrs 2019-08-09 08:21:54 +10:00
itsmattkc 6833b18829 merged probe functions into decoder class 2019-08-08 17:22:26 +10:00
itsmattkc f8830beac7 created new sequence dialog 2019-07-21 18:21:40 -07:00
itsmattkc 7b870de338 added mutex to items 2019-07-07 23:35:34 -05:00
itsmattkc 5e3c2fb7e4 documented (nearly) ever class 2019-07-06 23:32:01 -05:00
itsmattkc a9ff2389e6 minor code cleanup 2019-07-06 21:17:19 -05:00
itsmattkc 3038af3482 tasks are shared ptrs that can be cancelled and undone 2019-07-06 13:22:47 -05:00
itsmattkc b62ec30015 changed items to shared ptrs 2019-07-06 12:50:00 -05:00
itsmattkc a6971b3fde more work on project management 2019-07-06 09:46:55 -05:00
itsmattkc dae4310a7e reimplemented importing folders 2019-07-05 00:55:35 -05:00
itsmattkc 85b5bbd5d6 documentation and folded item delegates from old code back in 2019-07-02 03:01:46 -07:00
itsmattkc 0966b62f29 various improvements to import process and project management 2019-07-01 15:40:09 -07:00