Thomas Harte
ac732e2e7b
Attempts to ensure clean shutdown.
2020-06-14 23:38:44 -04:00
Thomas Harte
d08ffd6c8b
Makes sure the timer really, really is on a different thread.
...
Thereby allows me substantially to reduce audio latency.
2020-06-14 23:22:00 -04:00
Thomas Harte
79833deeaf
With some attempt at vsync prediction, seeks to smooth audio/video output.
...
There's plenty more work to do here, but hopefully it takes the issue immediately off the table.
2020-06-14 19:26:56 -04:00
Thomas Harte
405e9e7c68
Shunts audio into its own QThread.
...
For the record, this was the first means I found of attempting that which actually seemed to work. A plain QThread, with something `connect`ed to its `started` signal didn't seem to work (perhaps `connect` is smart at thread confinement?), `moveToThread` didn't work on the audio output after the fact, etc.
2020-06-10 22:14:54 -04:00
Thomas Harte
d9f02aecdf
Adds an additional buffer. To reduce latency. No, really.
...
Specifically: there's no way to guarantee no overbuffering due to the startup race, other than having QAudioOutput obtain data by pull rather than push. But if it's pulling then that implies an extra buffer. And since the sizes it may pull are not explicit, there's guesswork involved there.
So: no extra buffer => uncontrollable risk of over-buffering. Extra buffer => a controllable risk of over-buffering.
2020-06-09 00:01:22 -04:00
Thomas Harte
bcb23d9a15
Attempt to reduce audio latency. Unsuccessfully.
2020-06-08 21:30:35 -04:00
Thomas Harte
d027450502
Consolidates timer/thread ownership for the timer.
2020-06-07 00:31:46 -04:00
Thomas Harte
63ad1290f4
Actually, QIODevice is listed as reentrant. So no need to forward audio.
...
That said, latency is still absurd for some reason.
2020-06-06 23:47:57 -04:00
Thomas Harte
7c7cb61d2f
Corrects missing audio, at the cost of frame rate.
...
I'm now spinning on the ability of QAudioOutput to accept additional data.
2020-06-06 22:35:50 -04:00
Thomas Harte
68b165e244
QIODevice isn't guaranteed thread safe, so use of it is now thread confined.
2020-06-06 21:14:04 -04:00
Thomas Harte
fe1b6812f1
Fixes processing cap and attempts full-rate video output.
...
Audio now seems to be present, though hugely stuttered.
2020-06-06 19:47:35 -04:00
Thomas Harte
378ff39e5e
Makes an unsuccessful attempt at producing audio.
...
On the plus side, it does seem successfully to sniff out an appropriate audio format and to communicate mono/stereo onward.
2020-06-06 19:19:01 -04:00
Thomas Harte
e47cb91223
Pushes rudimentary keyboard input.
2020-06-05 23:06:28 -04:00
Thomas Harte
d62fb16a58
Adds an eventFilter, in order to steal keypresses.
2020-06-05 22:11:17 -04:00
Thomas Harte
fdc234ed3b
Advances to having a selected machine actually run.
...
Albeit, invisibly.
2020-06-03 23:39:16 -04:00
Thomas Harte
e2ceb77501
Attempts to start updating a started machine.
...
No real progress on graphics output though.
2020-06-03 00:21:37 -04:00
Thomas Harte
11c28357a1
Implements a basic ROM installation loop.
...
Albeit that I need to figure out how layouts work to keep that request view at least centred.
2020-06-02 23:35:01 -04:00
Thomas Harte
ba2a0600dc
Adds a basic Qt ROM fetcher and attempt to create a machine.
2020-06-01 23:14:57 -04:00
Thomas Harte
ab53165b34
Adds note on implementation obstacle.
2020-06-01 22:08:21 -04:00
Thomas Harte
a30723c3d4
Cleans up a little and ensures a safe exit of the timer thread.
2020-05-31 23:58:19 -04:00
Thomas Harte
d64b4fbc26
Adds a Qt timer class. Precision seems to be 'acceptable'.
2020-05-31 23:39:08 -04:00
Thomas Harte
267006782f
Starts to add Qt target; resolves many build warnings.
2020-05-30 00:37:06 -04:00