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
channels upon loading the playlist.
Processing manager now detects channel configuration changes and
restarts the channel if it is currently processing.
Channel editor enable button now shows green if it is processing, or
default when not processing.
functionality so that the editor starts up without a channel displayed
and as each channel row is selected in the channels table, the editor is
updated with the channel configuration.
Likewise, the channel editor is now a channel event listener on the
channel model and will maintain channel state if the user changes
channel configuration in any of the external channel controllers like
the spectral display or the channel list.
-Started work on new channel editor channel viewer/controller
-Removed a number of unused buffer package classes
-Moved automatic frequency control to be a module and removed special
handling
-Added IUnfilteredRealBufferListener & Provider interfaces
-Completely removed the ResourceManager class
AudioManager connection class monitoring of the playback state. Adds a
line listener to monitor when the line is started/stopped and responds
accordingly.
Removes squelch control from mono and stereo audio playback components
which was a holdover -- squelch state is now managed within the
audio component for each processing chain.