better handle processing and shutdowns.
-Reuses transfers between tuner start/stop invocations
-Moves libusb transfer status direct byte buffer allocation out of
buffer processing thread and reuses it, saving a lot of memory
allocations over time.
the spectral display to be slow to reflect changes to tuner settings.
Changed the max size of the sample queue based on the highest rate tuner
sample rate 10 MHz (airspy) and the lowest available spectral update
frame rate (12). Sized the buffer queue based on the maximum number of
buffers that should be available per DFT processing iteration. If the
queue backs up, new buffers will be discarded until the DFT processor
consumes the queue and catches up.
shared across multiple tuners of the same type, unless the user created
a new tuner configuration for each tuner.
Updated code to create a default tuner configuration based on the tuner
type, but name the configuration as 'Default-UNIQUETUNERID', so that any
changes to that uniquely identified tuner will persist across sessions.
Note: this does not avoid the situation where multiple tuners of the
same type are all using the same default serial number (e.g. 0000001).
In this case, they will all still share the same configuraiton. User
must change the serial number of the dongle in order for it to be
uniquely identifiable, so that we can correctly lookup the configuration
for the specific tuner.
haven't yet been initialized. This occurs when there is a channel
allocated from the tuner that is the first/only listener and then is
immediately released. Some of the buffers are in motion and the others
simply haven't yet been initialized.
Potential existed for the audio output class to become unsynchronized
with the underlying source data line and attempt to perform a blocking
write to the data line when the data line doesn't have the capacity to
accept the full buffer, and the data line is not started. Thus,
playback could potentially stay in a persitent blocked state.
Refactored Mono and Stereo audio output implementations to push the
audio buffer queue processing into the parent abstract class.
AudioManager was updated to remove the last time active timestamp out
of the audio manager and down into the audio output to remove duplicate
timestamp accounting.
and constraints on scheduled thread pool saturation. Adds a new
scheduled thread pool for each processing chain that the components in
the chain can share, versus the single shared pool exposed by the
threadpoolmanager class.
the NID crc check but uses an unrecognized data unit id, it will now be
broadcast as NID:UNKN, but allows for detection of new DUID types when
we have a large number of occurances of unknonwn duid types.
saturation.
Each tunerchannelsource was sharing a thread pool and as the processing
load increased, the thread pool was not expanding and the processing
tasks were backing up, causing the buffers to grow with unprocessed
data.
Changed so that each tuner channel source is handed a thread pool to use
for processing incoming sample data. Processing chain maintains the
thread pool and starts the channel source. This allows traffic channels
to reuse the thread pool across multiple iterations.
chain has a message broadcaster built in, so the decoder's broadcaster
is redundant. Changes Decoder(s) to only have a single registered
message listener (ie processing chain)
-Removed channel collection panel since panels will only have 1 channel
now
-Resolved issue with channel list and channel selection events
-Fixed some of the classes from the rebase to master branch