diff --git a/src/spectrum/DFTProcessor.java b/src/spectrum/DFTProcessor.java index 7900626f..b055fd0f 100644 --- a/src/spectrum/DFTProcessor.java +++ b/src/spectrum/DFTProcessor.java @@ -20,6 +20,7 @@ package spectrum; import java.util.Arrays; import java.util.Iterator; import java.util.concurrent.ArrayBlockingQueue; +import java.util.concurrent.BlockingQueue; import java.util.concurrent.CopyOnWriteArrayList; import java.util.concurrent.Executors; import java.util.concurrent.ScheduledExecutorService; @@ -56,9 +57,13 @@ public class DFTProcessor implements Listener, private CopyOnWriteArrayList mListeners = new CopyOnWriteArrayList(); - private ArrayBlockingQueue mQueue = - new ArrayBlockingQueue( 200 ); - + //Fixed size sample queue. We set the size at 12 based on the highest + //sample rate tuner (10 MHz) producing 153 frames per second and the lowest + //DFT processing frame rate of 12 frames per second. This means that the + //maximum size needed is 153 / 12 = 11 frames per DFT processing iteration + //so we set it at 12. + private BlockingQueue mQueue = new ArrayBlockingQueue<>( 12 ); + private ScheduledExecutorService mScheduler = Executors .newScheduledThreadPool( 1, new NamingThreadFactory( "spectrum dft" ) );