Commit Graph
32 Commits
Author SHA1 Message Date
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 1ae2c8b128 fixed mingw compile issue 2020-02-07 12:42:19 +11:00
itsmattkc 4697b98980 fixed gcc compile issues 2020-01-19 20:39:48 +11:00
itsmattkc 1101b58ee8 allow setting of pixel format/ocio method/sample format in preferences
Implementation isn't perfect yet, viewer/renderer doesn't update yet when
the preference is changed so a sequence needs to be re-opened for the change to
take effect.
2020-01-18 03:37:36 +11:00
itsmattkc 5bdc631da8 fixed bug caused by uninitialized variable in tempoprocessor 2020-01-07 20:23:45 +11:00
itsmattkc a616aaa182 correctly affect speed/reversing when shuttling audio 2020-01-07 16:41:30 +11:00
itsmattkc e671fb63b7 always close pull audio device when we're doing with it 2020-01-03 21:11:47 +11:00
itsmattkc f13f5b5fdb fixes memory leak in AudioManager
Ensures a thread that gets created gets deleted when it's done.
2020-01-03 02:44:33 +11:00
itsmattkc 02a790b041 simple file renames to better represent their new purposes 2020-01-03 02:36:30 +11:00
itsmattkc 0ac202078c rewrite of audio output manager for vastly improved operation
Previously the audio output manager was a "hybrid device" that acted as a pull
device for audio devices and as a push device and device proxy for the rest of
the application. This approach turned out to be flawed, particularly in the
frequent opening and closing of the audio device (extremely slow). Since we
use both pulling (for constant playback) and pushing (audio scrubbing, short
bursts of sound), it needed a similar but different approach. This approach
will switch the output device from push mode (default) to pull mode (during
playback) only when necessary resulting in far less UI lag (basically
unnoticeable now) than the previous approach.
2020-01-03 02:33:11 +11:00
itsmattkc 8ec63abc74 moved audio output manager and device to separate thread 2020-01-03 00:32:23 +11:00
itsmattkc 7d0d73bcfe use signal/slot threading for the audio refresh thread instead of subclassing QThread 2020-01-02 22:02:48 +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 eb970fc293 replaced assert(false) calls with abort() 2019-11-30 02:45:47 +11:00
itsmattkc cb5d816145 removed extraneous debug line in audiohybrid device
Code cleanup.
2019-11-23 17:03:37 +09:00
itsmattkc 51c95cc48f ensure audio output is always closed when it's no longer needed 2019-11-19 11:09:21 +09:00
itsmattkc cd69bd76b9 use sequence parameters as audio output parameters 2019-11-15 20:11:17 +09:00
itsmattkc a9660201f1 miscellaneous other changes to make audio rendering work
Many changes were made throughout the codebase to support audio, these are
most of the small changes necessary.

The audio support still is not perfect. I still need to write in resampling
support. After that it should work correctly with all audio types.
2019-11-15 13:57:49 +09:00
itsmattkc 9a44e656b5 added simple wave classes
To assist the input/output of PCM data, we use the fairly straight-forward
WAVE format. These classes simplify the input and output of such data.
2019-11-15 13:49:40 +09:00
itsmattkc 2fdf78df4a implemented preliminary pre-cacher for audio
FFmpegDecoder now implements an "indexer" for audio, which actually just
extracts the raw PCM audio from an audio codec and saves it to disk
2019-10-24 16:36:26 +11:00
itsmattkc 52f4c59bec implemented new audio monitor widget 2019-10-23 03:21:05 +11:00
itsmattkc 2860fe33a0 reworded debug message on output device change 2019-10-17 10:51:37 +11:00
itsmattkc 259b5d530a improved audio pausing feedback 2019-10-17 09:43:38 +11:00
itsmattkc 31453e7b46 stop when pushing samples as well 2019-10-17 09:43:09 +11:00
itsmattkc 856d42d431 documented AudioHybridDevice 2019-10-17 09:42:42 +11:00
itsmattkc 658820a103 removed debug msg 2019-10-16 22:34:04 +11:00
itsmattkc d6483916ac base audio renderer classes created 2019-10-16 13:51:56 +11:00
itsmattkc fe2b0f2dc2 implemented base audio playback and scrubbing 2019-10-14 11:38:29 +11:00
itsmattkc b942300aea setup test parameters 2019-10-14 08:42:03 +11:00
itsmattkc e0a483065a minor improvements 2019-09-27 03:07:59 +10:00
itsmattkc 8df4cf2cdc audiomanager implementation 2019-09-27 03:01:09 +10:00
itsmattkc d1cc36cb78 audio preferences 2019-09-26 19:53:35 +10:00