The tool record_time_signal is designed to measure the performance of
QAudioInput. The intended use is to record a short period of live
audio from an on-air time signal of known good quaility, the basic
required parameters are an audio input device, an output file name
(.WAV), a start second in a minute, and a duration in seconds. So for
example to record the time signal ticks and fast data at the top of
the minute:
$ record_time_signal -o wwv.wav -s 55 -d 15
will record 15s of audio at 48000Hz sample rate, stereo, from the
default audio input device, starting at second 55. This will use a
separate timer to stop the recording which is likely to leave the
output file a little short due to buffer latency. The buffer size can
be adjusted using the '-b <buffered-frames>' option.
The tool also supoorts a different mechanism to time the recording
which uses the audio progress via a notify signal. This should ensure
at least the requested duration is recorded The shorter the notify
interval the closer teh final size shoould be to the requested
duration. Use the '-d <interval-ms>' option to adjust the notify
interval.
$ record_time_signal -o wwv.wav -s 55 -d 15 -n 100
Non-default audio devices can be selected, use the '-I' option to list
the available input devices with an index number that can be used to
select the device using the 'R <device-number>' option.
Other options are available, use '-h' for details.
Basic validation, must have non-empty exchange sent and received.
Abstracted log view window widget behaviour into a base class. Turned
on auto resize to row height in log view windows and enabled
alternating colours. Convert empty fields to NULL when inserting new
log table rows to signify missing data. Trap insert row errors when
adding to contest log table so that logging can be held back if
constraints are not met. Re-factored log QSO processing to try insert
row into log table first and pop up a message box if constraints are
not met, this pops up the Log QSO window in case it was initiated by
an auto log event.
This change incorporates a reorganization of the GUI code with
widgets, validators, models, and item delegates being moved to
sub-directories.
Relax the requirements of the ForeignKeyDelegate and related
CandidateKeyFilter classes to allow them to work with constant model
pointers for both referenced and referencing models.