that is currently up/down converting the signal of interest, but the
synthesizer is not correctly combining the original two channels.
Some experimentation with the tap count for the channelizer indicates
that we can cut the tap count in half and still have decent decoding
on the P25 decoder when paired to an aligned channelized output. The
2-channel synthesized output decodes partially, but needs more work.
Resolved issue with channel gain in the channelizer that was making the
sample values so small that they were registering as zero when converted
from float to 16-bit int value in the complex wave recorder.
produces a significant reduction in memory usage, especially for tuners
like the airspy and hackrf that produce 10/20 MSPS sample rates. This
is observed to be around 66% reduction in peak memory usage and provides
a more stable memory utilization across time reducing stress on the
garbage collector.
Use of these reusable memory buffers will be pushed further down into
the processing chain modules to ensure we keep new object creation
to the lowest levels possible.
messages and events can be accurately timestamped, and more importantly,
allocated traffic channels can request to be pre-loaded with buffered
samples to ensure that traffic channels don't miss any samples that
are currently missed due processing latency inherent in current buffer
sizing. This should reduce the clipping of starting messages or voice
on the traffic channels.
Restructures processing path for tuner frequency and sample rate change
events. The tuner now embeds these events in the sequence of buffers
that are generated immediately after the event occurs since those are
the buffers that will be impacted by the change. Previously, the change
event would be broadcast throughout the system and would impact any
buffered/cached buffers. This also reduces the number of source event
change listeners that have to be managed. Note: this change is not yet
implemented in all tuners ... only in the TestTuner implementation.
Updates the polyphase channelizer to now buffer channel results and then
dispatch the buffer to the channel output processors to improve efficiency
of using float arrays versus single value complex float processing.