Updates all reusable buffer queues to automatically set the user count

to 1 on all provided buffers by default.
This commit is contained in:
Denny
2018-07-01 07:08:52 -04:00
parent 0051a1d381
commit e88944e53d
36 changed files with 18 additions and 55 deletions

View File

@@ -148,7 +148,6 @@ public class AudioModule extends Module implements IAudioPacketProvider, IReusab
ReusableAudioPacket audioPacket = mAudioPacketQueue.getBuffer(highPassFiltered.getSampleCount());
audioPacket.loadAudioFrom(highPassFiltered);
audioPacket.setMetadata(mMetadata.copyOf());
audioPacket.incrementUserCount();
mAudioPacketListener.receive(audioPacket);

View File

@@ -48,7 +48,6 @@ public class MP3SilenceGenerator implements ISilenceGenerator
int length = (int)(duration * 8); //8000 Hz sample rate
ReusableAudioPacket silencePacket = mAudioPacketQueue.getBuffer(length);
Arrays.fill(silencePacket.getAudioSamples(), 0.0f);
silencePacket.incrementUserCount();
List<ReusableAudioPacket> silencePackets = new ArrayList<>();
silencePackets.add(silencePacket);

View File

@@ -76,7 +76,6 @@ public class AMDemodulator
}
complexBuffer.decrementUserCount();
reusableBuffer.incrementUserCount();
return reusableBuffer;
}

View File

@@ -225,8 +225,6 @@ public class ComplexPolyphaseChannelizerM2 extends AbstractComplexPolyphaseChann
}
}
channelResultsBuffer.incrementUserCount();
//Enqueue the channel results buffer for IFFT processing and distribution on a different thread
mIFFTProcessor.receive(channelResultsBuffer);

View File

@@ -156,8 +156,6 @@ public class TwoChannelSynthesizerM2
channelBuffer1.decrementUserCount();
channelBuffer2.decrementUserCount();
synthesizedComplexBuffer.incrementUserCount();
return synthesizedComplexBuffer;
}

View File

@@ -42,7 +42,6 @@ public class IQCorrectionFilter
float[] samples = buffer.getSamples();
ReusableComplexBuffer filtered = mReusableComplexBufferQueue.getBuffer(samples.length);
filtered.incrementUserCount();
float[] filteredSamples = filtered.getSamples();
for(int x = 0; x < samples.length; x += 2)

View File

@@ -92,7 +92,6 @@ public class BufferDCFilter
}
unfilteredBuffer.decrementUserCount();
filteredBuffer.incrementUserCount();
return filteredBuffer;
}

View File

@@ -90,7 +90,6 @@ public class DCRemovalFilter
}
unfilteredBuffer.decrementUserCount();
filteredBuffer.incrementUserCount();
return filteredBuffer;
}

View File

@@ -79,7 +79,6 @@ public class IIRSinglePoleDCRemovalFilter implements RealSampleListener
}
inputBuffer.decrementUserCount();
outputBuffer.incrementUserCount();
return outputBuffer;
}

View File

@@ -124,7 +124,6 @@ public class ComplexFIRFilter2 extends FIRFilter
}
originalBuffer.decrementUserCount();
filteredBuffer.incrementUserCount();
return filteredBuffer;
}

View File

@@ -125,7 +125,6 @@ public class RealFIRFilter2 extends FIRFilter
filteredSamples[x] = filter(unfilteredSamples[x]);
}
filteredBuffer.incrementUserCount();
unfilteredBuffer.decrementUserCount();
return filteredBuffer;

View File

@@ -95,7 +95,6 @@ public class HalfBandFilter
outputSamples[x] = filter(inputSamples[x]);
}
output.incrementUserCount();
input.decrementUserCount();
return output;

View File

@@ -129,7 +129,6 @@ public class RealResampler
while(mOutputBuffer.position() > mOutputBufferSize)
{
ReusableBuffer outputBuffer = mReusableBufferQueue.getBuffer(mOutputBufferSize);
outputBuffer.incrementUserCount();
mOutputBuffer.flip();
mOutputBuffer.get(outputBuffer.getSamples());

View File

@@ -142,7 +142,6 @@ public class FMDemodulator
}
basebandSampleBuffer.decrementUserCount();
demodulatedBuffer.incrementUserCount();
return demodulatedBuffer;
}

View File

@@ -160,7 +160,6 @@ public class AutomaticGainControl
}
input.decrementUserCount();
output.incrementUserCount();
return output;
}

View File

@@ -173,7 +173,6 @@ public class ComplexFeedForwardGainControl implements ComplexSampleListener
}
buffer.decrementUserCount();
filteredBuffer.incrementUserCount();
return filteredBuffer;
}

View File

@@ -300,8 +300,6 @@ public class SynthesizerViewer extends JFrame
getChannel2ControlPanel().getOscillator().generateComplex(channel2Buffer);
channel1Buffer.incrementUserCount();
channel1Buffer.incrementUserCount();
channel2Buffer.incrementUserCount();
channel2Buffer.incrementUserCount();
ReusableComplexBuffer synthesizedBuffer = mSynthesizer.process(channel1Buffer, channel2Buffer);

View File

@@ -162,7 +162,6 @@ public class P25AudioModule extends Module implements Listener<Message>, IAudioP
ReusableAudioPacket audioPacket = mAudioPacketQueue.getBuffer(audio.length);
audioPacket.setMetadata(mMetadata.copyOf());
audioPacket.loadAudioFrom(audio);
audioPacket.incrementUserCount();
mAudioPacketListener.receive(audioPacket);
}

View File

@@ -61,7 +61,6 @@ public class ComplexShortAdapter extends ComplexSampleAdapter
pointer++;
}
reusableBuffer.incrementUserCount();
return reusableBuffer;
}

View File

@@ -76,7 +76,6 @@ public class RealChannelShortAdapter extends RealSampleAdapter
}
}
reusableBuffer.incrementUserCount();
return reusableBuffer;
}

View File

@@ -58,7 +58,6 @@ public class RealShortAdapter extends RealSampleAdapter
pointer++;
}
reusableBuffer.incrementUserCount();
return reusableBuffer;
}

View File

@@ -29,6 +29,7 @@ public abstract class AbstractReusableBufferQueue<T extends AbstractReusableBuff
private Queue<T> mReusableBufferQueue = new LinkedTransferQueue<>();
private int mBufferCount = 0;
private String mDebugName;
protected boolean mBufferCreationLoggingEnabled = true;
/**
* Base queue for managing reusable buffers.
@@ -89,6 +90,12 @@ public abstract class AbstractReusableBufferQueue<T extends AbstractReusableBuff
protected void incrementBufferCount()
{
mBufferCount++;
if(mBufferCreationLoggingEnabled)
{
mLog.debug("Buffer Created - count:" + mBufferCount +
" debug:" + (mDebugName != null ? mDebugName : "null") + " class:" + this.getClass());
}
}
/**

View File

@@ -44,14 +44,13 @@ public class ReusableAudioPacketQueue extends AbstractReusableBufferQueue<Reusab
if(buffer == null)
{
buffer = new ReusableAudioPacket(this, size);
incrementBufferCount();
buffer.setDebugName("Owner:" + getDebugName());
// mLog.debug("Buffer Created - Count:" + getBufferCount() + (getDebugName() != null ? " [" + getDebugName() + "]" : ""));
incrementBufferCount();
}
buffer.setType(ReusableAudioPacket.Type.AUDIO);
buffer.resize(size);
buffer.incrementUserCount();
return buffer;
}

View File

@@ -118,14 +118,6 @@ public class ReusableBuffer extends AbstractReusableBuffer
*/
public void reloadFrom(FloatBuffer floatBuffer, long timestamp)
{
if(mUserCount.get() > 0)
{
throw new IllegalStateException("New data cannot be loaded into this reusable buffer while the user count " +
"is above zero - user count:" + mUserCount.get());
}
mUserCount.set(0);
resize(floatBuffer.capacity());
floatBuffer.rewind();
floatBuffer.get(mSamples);

View File

@@ -53,7 +53,6 @@ public class ReusableBufferAssembler implements RealSampleListener
if(mCurrentBuffer == null)
{
mCurrentBuffer = mReusableBufferQueue.getBuffer(mBufferSize);
mCurrentBuffer.incrementUserCount();
mBufferPointer = 0;
}

View File

@@ -29,7 +29,8 @@ public class ReusableBufferQueue extends AbstractReusableBufferQueue<ReusableBuf
/**
* Returns a reusable buffer from an internal recycling queue, or creates a new buffer if there are currently no
* buffers available for reuse.
* buffers available for reuse. The user count is set to one and must be managed throughout the lifecycle
* of the buffer.
*
* @param size of the samples that will be loaded into the buffer
* @return a reusable buffer
@@ -41,13 +42,12 @@ public class ReusableBufferQueue extends AbstractReusableBufferQueue<ReusableBuf
if(buffer == null)
{
buffer = new ReusableBuffer(this, new float[size]);
incrementBufferCount();
buffer.setDebugName("Owner:" + getDebugName());
// mLog.debug("Buffer Created - Count:" + getBufferCount() + (getDebugName() != null ? " [" + getDebugName() + "]" : ""));
incrementBufferCount();
}
buffer.resize(size);
buffer.incrementUserCount();
return buffer;
}

View File

@@ -148,8 +148,6 @@ public class ReusableChannelResultsBuffer extends AbstractReusableBuffer
}
}
channelBuffer.incrementUserCount();
return channelBuffer;
}

View File

@@ -44,12 +44,12 @@ public class ReusableChannelResultsBufferQueue extends AbstractReusableBufferQue
if(buffer == null)
{
buffer = new ReusableChannelResultsBuffer(this);
incrementBufferCount();
buffer.setDebugName("Owner:" + getDebugName());
// mLog.debug("Buffer Created - Count:" + getBufferCount() + (getDebugName() != null ? " [" + getDebugName() + "]" : ""));
incrementBufferCount();
}
buffer.incrementUserCount();
return buffer;
}
}

View File

@@ -127,7 +127,6 @@ public class ReusableComplexBufferAssembler
mBuffer.rewind();
ReusableComplexBuffer reusableComplexBuffer = mReusableComplexBufferQueue.getBuffer(mBufferSize);
reusableComplexBuffer.reloadFrom(mBuffer, mCurrentBufferTimestamp);
reusableComplexBuffer.incrementUserCount();
mListener.receive(reusableComplexBuffer);
}

View File

@@ -52,13 +52,12 @@ public class ReusableComplexBufferQueue extends AbstractReusableBufferQueue<Reus
if(buffer == null)
{
buffer = new ReusableComplexBuffer(this, new float[size]);
incrementBufferCount();
buffer.setDebugName("Owner:" + getDebugName());
// mLog.debug("Buffer Created - Count:" + getBufferCount() + (getDebugName() != null ? " [" + getDebugName() + "]" : ""));
incrementBufferCount();
}
buffer.resize(size);
buffer.incrementUserCount();
return buffer;
}

View File

@@ -186,7 +186,6 @@ public class CICTunerChannelSource
float[] samples = buffer.getSamples();
ReusableComplexBuffer reusableComplexBuffer = mReusableComplexBufferQueue.getBuffer(samples.length);
reusableComplexBuffer.incrementUserCount();
float[] translated = reusableComplexBuffer.getSamples();
/* Perform frequency translation */

View File

@@ -196,7 +196,6 @@ public class SampleGenerator
mOscillator.generateComplex(reusableComplexBuffer);
reusableComplexBuffer.incrementUserCount();
mComplexBufferBroadcaster.broadcast(reusableComplexBuffer);
if(mSweepUpdateInterval != 0)

View File

@@ -49,7 +49,6 @@ public abstract class NativeBufferConverter
//The reusable buffer will rewind the float buffer to the beginning
reusableComplexBuffer.reloadFrom(floatBuffer, System.currentTimeMillis());
reusableComplexBuffer.incrementUserCount();
return reusableComplexBuffer;
}

View File

@@ -218,7 +218,6 @@ public class ComplexWaveSource extends ComplexSource implements IControllableFil
ReusableComplexBuffer reusableBuffer = mReusableComplexBufferQueue.getBuffer(samples.length);
reusableBuffer.reloadFrom(samples, System.currentTimeMillis());
reusableBuffer.incrementUserCount();
mListener.receive(reusableBuffer);
}
}

View File

@@ -232,7 +232,6 @@ public class RealWaveSource extends RealSource implements IControllableFileSourc
ReusableBuffer reusableBuffer = mReusableBufferQueue.getBuffer(samples.length);
reusableBuffer.reloadFrom(samples, System.currentTimeMillis());
reusableBuffer.incrementUserCount();
mListener.receive(reusableBuffer);
}

View File

@@ -275,7 +275,6 @@ public class ChannelSpectrumPanel extends JPanel implements ChannelEventListener
//processor is expecting.
ReusableComplexBuffer reusableComplexBuffer = mReusableComplexBufferQueue.getBuffer(decimated.getSamples().length);
reusableComplexBuffer.reloadFrom(decimated.getSamples(), System.currentTimeMillis());
reusableComplexBuffer.incrementUserCount();
mDFTProcessor.receive(reusableComplexBuffer);
}