Commit Graph

11 Commits

Author SHA1 Message Date
Bill Somerville
e8808ebc54
Remove unnecessary stop of the input audio stream after error notifications 2020-09-26 21:07:35 +01:00
Bill Somerville
542ffe8311
Improve audio device handling and error recovery
where possible  audio devices that  disappear are not  forgotten until
the user selects another device, this should allow temporarily missing
devices or forgetting  to switch on devices before  starting WSJT-X to
be  handled more  cleanly. If  all else  fails, visiting  the Settings
dialog and  clicking OK should  get things  going again. Note  that we
still  do not  have  a  reliable way  of  detecting  failed audio  out
devices, in that  case selecting another device and  then returning to
the original should work.

Enumerating  audio devices  is expensive  and on  Linux may  take many
seconds per  device. To avoid  lengthy blocking behaviour until  it is
absolutely necessary,  audio devices are  not enumerated until  one of
the "Settings->Audio" device drop-down lists is opened. Elsewhere when
devices  must be  discovered  the  enumeration stops  as  soon as  the
configured device is  discovered. A status bar message  is posted when
audio devices are being enumerated as a reminder that the UI may block
while this is happening.

The message box warning about  unaccounted-for input audio samples now
only triggers when  >5 seconds of audio appears to  be missing or over
provided. Hopefully this will make the warning less annoying for those
that are  using audio sources  with high and/or variable  latencies. A
status  bar message  is still  posted for  any amount  of audio  input
samples  unaccounted for  >1/5 second,  this message  appearing a  lot
should be considered as notification that  there is a problem with the
audio sub-system, system load is  too high, or time synchronization is
stepping the PC clock rather  than adjusting the frequency to maintain
monotonic clock ticks.
2020-09-20 18:20:16 +01:00
Bill Somerville
d1fa08ab78
Handle 24hr wrap of QAudioInput::elapsedUSecs() on Linux & Windows 2020-08-22 18:09:51 +01:00
Bill Somerville
4f68dfda40
Only tune audio buffer sizes on Windows 2020-08-11 14:27:46 +01:00
Bill Somerville
0cf14dfcc9
Remove user adjustable audio buffer sizes from Settings
Fixed buffer sizes are  used. Rx use s 3456 x 1st  downsample rate x 5
audio  frames  of  buffer  space.  On Windows  this  means  that  each
chunk (periodSize())  delivered from the  audio stream is  our initial
DSP processing chunk size, thus  matching audio buffer latency exactly
with WSJT-X's  own front  end latency. This  should result  in optimal
resilience to high system loads that might starve the soundcard ADC of
buffers to fill and case dropped audio frames.

For Tx  a buffer sufficient for  1 s of  audio is used at  present, on
Windows  the period  size will  be  set to  1/40 of  that which  gives
reasonably low latency  and plenty of resilience to  high system loads
that might  starve the soundcard DAC  of audio frames to  render. Note
that a 1 s  buffer will make the "Pwr" slider slow  to respond, we may
have to reduce the Tx audio buffer size if this is seen as a problem.
2020-08-11 13:48:01 +01:00
Bill Somerville
ecde374cee
Trying a fixed audio input buffer size 2020-08-10 11:01:38 +01:00
Bill Somerville
2e413713a3
Tidy dropped frame status bar message 2020-08-08 19:40:42 +01:00
Bill Somerville
02e19b687f
Status message to report approximate # of dropped Rx audio frames
This is  a first cut  at this to  evaluate buffer size  adjustments on
supported platforms. A final version might limit status bar reports to
>1000 dropped frames or similar.
2020-08-08 17:12:48 +01:00
Bill Somerville
6ea62d9476
Remove default audio devices from audio configuration
This enforces  an audio input device  in the settings dialog  since we
can't do anything  without an input device. A nil  audio output device
is allowed with a warning.
2020-08-08 16:57:51 +01:00
Bill Somerville
a0ceace5b4
User configurable audio device buffer sizes
Adjusting these may help with  audio drop-outs, particularly on slower
CPU systems or heavily loaded systems. Smaller buffer sizes leave less
margin for  process interruptions,  larger sizes waste  resources that
could impact other processes.
2020-08-08 16:25:14 +01:00
sirhc808
1f57ba5fec improve physical structure 2019-07-02 12:45:05 -05:00