From 0cf964fa9845d954a86f07bc8521a2fc9eaee9cf Mon Sep 17 00:00:00 2001 From: Denny Date: Sat, 20 Jan 2018 04:26:53 -0500 Subject: [PATCH] Updates test tuner to cleanup the buffer reuse settings --- .../filter/channelizer/ChannelizerViewer.java | 4 +++- .../source/tuner/test/SampleGenerator.java | 22 +++++++++++++++---- .../tuner/test/TestTunerController.java | 14 ++++++++++-- 3 files changed, 33 insertions(+), 7 deletions(-) diff --git a/src/main/java/io/github/dsheirer/dsp/filter/channelizer/ChannelizerViewer.java b/src/main/java/io/github/dsheirer/dsp/filter/channelizer/ChannelizerViewer.java index b37e82ff..2a5cb42d 100644 --- a/src/main/java/io/github/dsheirer/dsp/filter/channelizer/ChannelizerViewer.java +++ b/src/main/java/io/github/dsheirer/dsp/filter/channelizer/ChannelizerViewer.java @@ -381,6 +381,9 @@ public class ChannelizerViewer extends JFrame { TestTuner tuner = new TestTuner(); + //Turn on buffer reuse since we're simply profiling data flow/throughput + tuner.getTunerController().setReuseBuffers(true); + List tunerChannels = getTunerChannels(tuner); List sources = new ArrayList<>(); @@ -424,5 +427,4 @@ public class ChannelizerViewer extends JFrame while(true); } } - } \ No newline at end of file diff --git a/src/main/java/io/github/dsheirer/source/tuner/test/SampleGenerator.java b/src/main/java/io/github/dsheirer/source/tuner/test/SampleGenerator.java index c7a4147a..76e7642b 100644 --- a/src/main/java/io/github/dsheirer/source/tuner/test/SampleGenerator.java +++ b/src/main/java/io/github/dsheirer/source/tuner/test/SampleGenerator.java @@ -50,7 +50,7 @@ public class SampleGenerator * @param sweepUpdateRate to turn on sweeping of the tone frequency where the frequency is incremented by the * rate specified at each interval, resetting to 1 Hz after reaching/exceeding the highest frequency. */ - public SampleGenerator(int sampleRate, long frequency, long interval, int sweepUpdateRate, boolean reuseBuffers) + public SampleGenerator(int sampleRate, long frequency, long interval, int sweepUpdateRate) { if(Math.abs(sweepUpdateRate) >= sampleRate) { @@ -60,7 +60,6 @@ public class SampleGenerator mOscillator = new LowPhaseNoiseOscillator(sampleRate, frequency); mInterval = interval; mSweepUpdateInterval = sweepUpdateRate; - mReuseBuffers = reuseBuffers; updateSamplesPerInterval(); } @@ -74,9 +73,24 @@ public class SampleGenerator * @param frequency of the tone produced by the generator * @param interval in milliseconds for generating samples */ - public SampleGenerator(int sampleRate, long frequency, long interval, boolean reuseBuffers) + public SampleGenerator(int sampleRate, long frequency, long interval) { - this(sampleRate, frequency, interval, 0, reuseBuffers); + this(sampleRate, frequency, interval, 0); + } + + /** + * Instructs the sample generator to reuse the same sample buffer each time instead of generating new samples for + * each and every buffer. This is useful when you simply want to generate data to test or profile data flows and + * are not concerned about the content of the buffers. + * + * The generator will create a new buffer of data each time that it detects that the sample size changes or when + * the tone frequency changes. + * + * @param reuseBuffers set to true to turn on buffer reuse + */ + public void setReuseBuffers(boolean reuseBuffers) + { + mReuseBuffers = reuseBuffers; } /** diff --git a/src/main/java/io/github/dsheirer/source/tuner/test/TestTunerController.java b/src/main/java/io/github/dsheirer/source/tuner/test/TestTunerController.java index b9e6f3c8..e8f980ba 100644 --- a/src/main/java/io/github/dsheirer/source/tuner/test/TestTunerController.java +++ b/src/main/java/io/github/dsheirer/source/tuner/test/TestTunerController.java @@ -40,7 +40,6 @@ public class TestTunerController extends TunerController public static final long SAMPLE_GENERATION_INTERVAL = 1000 / SPECTRAL_FRAME_RATE; private SampleGenerator mSampleGenerator; - private boolean mReuseBuffers = true; private long mFrequency = 100000000l; /** @@ -53,7 +52,7 @@ public class TestTunerController extends TunerController int sweepRate = 0; //Hz per interval long initialToneFrequency = SAMPLE_RATE / 2 + 100; mSampleGenerator = new SampleGenerator(SAMPLE_RATE, initialToneFrequency, SAMPLE_GENERATION_INTERVAL, - sweepRate, mReuseBuffers); + sweepRate); try { @@ -66,6 +65,17 @@ public class TestTunerController extends TunerController } } + /** + * Sets the sample generator to reuse buffers instead of generating new buffers each time. Enable this setting + * when you simply want to test/profile buffer data flows for consumer processes. + * + * @param reuseBuffers set to true to turn on buffer reuse + */ + public void setReuseBuffers(boolean reuseBuffers) + { + mSampleGenerator.setReuseBuffers(reuseBuffers); + } + @Override public void addComplexBufferListener(Listener listener) {