mirror of
https://github.com/DSheirer/sdrtrunk.git
synced 2026-11-12 08:37:25 -05:00
Updates all reusable buffer queues to automatically set the user count
to 1 on all provided buffers by default.
This commit is contained in:
@@ -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);
|
||||
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -76,7 +76,6 @@ public class AMDemodulator
|
||||
}
|
||||
|
||||
complexBuffer.decrementUserCount();
|
||||
reusableBuffer.incrementUserCount();
|
||||
|
||||
return reusableBuffer;
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
|
||||
|
||||
@@ -156,8 +156,6 @@ public class TwoChannelSynthesizerM2
|
||||
channelBuffer1.decrementUserCount();
|
||||
channelBuffer2.decrementUserCount();
|
||||
|
||||
synthesizedComplexBuffer.incrementUserCount();
|
||||
|
||||
return synthesizedComplexBuffer;
|
||||
}
|
||||
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -92,7 +92,6 @@ public class BufferDCFilter
|
||||
}
|
||||
|
||||
unfilteredBuffer.decrementUserCount();
|
||||
filteredBuffer.incrementUserCount();
|
||||
|
||||
return filteredBuffer;
|
||||
}
|
||||
|
||||
@@ -90,7 +90,6 @@ public class DCRemovalFilter
|
||||
}
|
||||
|
||||
unfilteredBuffer.decrementUserCount();
|
||||
filteredBuffer.incrementUserCount();
|
||||
|
||||
return filteredBuffer;
|
||||
}
|
||||
|
||||
@@ -79,7 +79,6 @@ public class IIRSinglePoleDCRemovalFilter implements RealSampleListener
|
||||
}
|
||||
|
||||
inputBuffer.decrementUserCount();
|
||||
outputBuffer.incrementUserCount();
|
||||
|
||||
return outputBuffer;
|
||||
}
|
||||
|
||||
@@ -124,7 +124,6 @@ public class ComplexFIRFilter2 extends FIRFilter
|
||||
}
|
||||
|
||||
originalBuffer.decrementUserCount();
|
||||
filteredBuffer.incrementUserCount();
|
||||
|
||||
return filteredBuffer;
|
||||
}
|
||||
|
||||
@@ -125,7 +125,6 @@ public class RealFIRFilter2 extends FIRFilter
|
||||
filteredSamples[x] = filter(unfilteredSamples[x]);
|
||||
}
|
||||
|
||||
filteredBuffer.incrementUserCount();
|
||||
unfilteredBuffer.decrementUserCount();
|
||||
|
||||
return filteredBuffer;
|
||||
|
||||
@@ -95,7 +95,6 @@ public class HalfBandFilter
|
||||
outputSamples[x] = filter(inputSamples[x]);
|
||||
}
|
||||
|
||||
output.incrementUserCount();
|
||||
input.decrementUserCount();
|
||||
|
||||
return output;
|
||||
|
||||
@@ -129,7 +129,6 @@ public class RealResampler
|
||||
while(mOutputBuffer.position() > mOutputBufferSize)
|
||||
{
|
||||
ReusableBuffer outputBuffer = mReusableBufferQueue.getBuffer(mOutputBufferSize);
|
||||
outputBuffer.incrementUserCount();
|
||||
|
||||
mOutputBuffer.flip();
|
||||
mOutputBuffer.get(outputBuffer.getSamples());
|
||||
|
||||
@@ -142,7 +142,6 @@ public class FMDemodulator
|
||||
}
|
||||
|
||||
basebandSampleBuffer.decrementUserCount();
|
||||
demodulatedBuffer.incrementUserCount();
|
||||
|
||||
return demodulatedBuffer;
|
||||
}
|
||||
|
||||
@@ -160,7 +160,6 @@ public class AutomaticGainControl
|
||||
}
|
||||
|
||||
input.decrementUserCount();
|
||||
output.incrementUserCount();
|
||||
|
||||
return output;
|
||||
}
|
||||
|
||||
@@ -173,7 +173,6 @@ public class ComplexFeedForwardGainControl implements ComplexSampleListener
|
||||
}
|
||||
|
||||
buffer.decrementUserCount();
|
||||
filteredBuffer.incrementUserCount();
|
||||
|
||||
return filteredBuffer;
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
@@ -61,7 +61,6 @@ public class ComplexShortAdapter extends ComplexSampleAdapter
|
||||
pointer++;
|
||||
}
|
||||
|
||||
reusableBuffer.incrementUserCount();
|
||||
return reusableBuffer;
|
||||
}
|
||||
|
||||
|
||||
@@ -76,7 +76,6 @@ public class RealChannelShortAdapter extends RealSampleAdapter
|
||||
}
|
||||
}
|
||||
|
||||
reusableBuffer.incrementUserCount();
|
||||
return reusableBuffer;
|
||||
}
|
||||
|
||||
|
||||
@@ -58,7 +58,6 @@ public class RealShortAdapter extends RealSampleAdapter
|
||||
pointer++;
|
||||
}
|
||||
|
||||
reusableBuffer.incrementUserCount();
|
||||
return reusableBuffer;
|
||||
}
|
||||
|
||||
|
||||
@@ -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());
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -53,7 +53,6 @@ public class ReusableBufferAssembler implements RealSampleListener
|
||||
if(mCurrentBuffer == null)
|
||||
{
|
||||
mCurrentBuffer = mReusableBufferQueue.getBuffer(mBufferSize);
|
||||
mCurrentBuffer.incrementUserCount();
|
||||
mBufferPointer = 0;
|
||||
}
|
||||
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
@@ -148,8 +148,6 @@ public class ReusableChannelResultsBuffer extends AbstractReusableBuffer
|
||||
}
|
||||
}
|
||||
|
||||
channelBuffer.incrementUserCount();
|
||||
|
||||
return channelBuffer;
|
||||
}
|
||||
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -127,7 +127,6 @@ public class ReusableComplexBufferAssembler
|
||||
mBuffer.rewind();
|
||||
ReusableComplexBuffer reusableComplexBuffer = mReusableComplexBufferQueue.getBuffer(mBufferSize);
|
||||
reusableComplexBuffer.reloadFrom(mBuffer, mCurrentBufferTimestamp);
|
||||
reusableComplexBuffer.incrementUserCount();
|
||||
mListener.receive(reusableComplexBuffer);
|
||||
}
|
||||
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
@@ -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 */
|
||||
|
||||
@@ -196,7 +196,6 @@ public class SampleGenerator
|
||||
|
||||
mOscillator.generateComplex(reusableComplexBuffer);
|
||||
|
||||
reusableComplexBuffer.incrementUserCount();
|
||||
mComplexBufferBroadcaster.broadcast(reusableComplexBuffer);
|
||||
|
||||
if(mSweepUpdateInterval != 0)
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user