mirror of
https://github.com/DSheirer/sdrtrunk.git
synced 2026-11-12 08:37:25 -05:00
Converted to use float primitives and to keep samples in buffer format until the sample rate is decimated to 48kHz. Added new non-recursive, CIC decimation filter -- untested Updated sound card/mixer input source management. Now testing for mono/stereo support for each card and limiting channel choices accordingly. Separated the mixersource into a ComplexMixer and and SimplexMixerSource. The ComplexMixer is used for sound card based tuners like the funcube. The SimplexMixerSource is used for demodulated sound card inputs. Interfaces for sample handling - standardized on using 'Complex' to indicate I/Q samples and 'Simplex' to indicate demodulated float samples. The processing chain now accepts either a decimated (48k) list of complex samples from a tuner channel source, or a 48k simplex buffer (array of demodulated float samples). Resolved issue with HackRF tuner not applying tuner configuration information.
59 lines
1.0 KiB
Java
59 lines
1.0 KiB
Java
package sample.decimator;
|
|
|
|
import sample.complex.ComplexSampleListener;
|
|
|
|
|
|
public class ComplexDecimator implements ComplexSampleListener
|
|
{
|
|
private ComplexSampleListener mListener;
|
|
private int mCounter = 0;
|
|
private int mDecimationRate;
|
|
|
|
/**
|
|
* Constructs a new Decimator object with the specified decimation rate.
|
|
*/
|
|
public ComplexDecimator( int rate )
|
|
{
|
|
mDecimationRate = rate;
|
|
}
|
|
|
|
public void dispose()
|
|
{
|
|
mListener = null;
|
|
}
|
|
|
|
/**
|
|
* Sets a new decimation rate. Rate can be changed after this object
|
|
* is constructed.
|
|
*/
|
|
public synchronized void setDecimationRate( int rate )
|
|
{
|
|
mDecimationRate = rate;
|
|
}
|
|
|
|
/**
|
|
* Receives samples allowing only 1 of every (rate) sample to go on
|
|
* to the registered listener
|
|
*/
|
|
@Override
|
|
public void receive( float i, float q )
|
|
{
|
|
mCounter++;
|
|
|
|
if( mCounter >= mDecimationRate )
|
|
{
|
|
mListener.receive( i, q );
|
|
|
|
mCounter = 0;
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Sets the decimated output listener
|
|
*/
|
|
public void setListener( ComplexSampleListener listener )
|
|
{
|
|
mListener = listener;
|
|
}
|
|
}
|