mirror of
https://github.com/DSheirer/sdrtrunk.git
synced 2026-11-13 09:07:27 -05:00
#1351 Restores semi-accurate timestamps of sample buffers to ensure P25 & DMR decoded messages have accurate timestamps and MBE recording voice frames have accurate timestamps. (#1357)
Co-authored-by: Dennis Sheirer <dsheirer@github.com>
This commit is contained in:
@@ -33,7 +33,8 @@ public interface IComplexOscillator extends IOscillator
|
||||
/**
|
||||
* Generates the specified number of complex samples into a complex samples object.
|
||||
* @param sampleCount number of complex samples to generate.
|
||||
* @param timestamp for the first sample
|
||||
* @return generated samples
|
||||
*/
|
||||
ComplexSamples generateComplexSamples(int sampleCount);
|
||||
ComplexSamples generateComplexSamples(int sampleCount, long timestamp);
|
||||
}
|
||||
|
||||
@@ -96,7 +96,7 @@ public class ScalarComplexOscillator extends AbstractOscillator implements IComp
|
||||
}
|
||||
|
||||
@Override
|
||||
public ComplexSamples generateComplexSamples(int sampleCount)
|
||||
public ComplexSamples generateComplexSamples(int sampleCount, long timestamp)
|
||||
{
|
||||
float[] iSamples = new float[sampleCount];
|
||||
float[] qSamples = new float[sampleCount];
|
||||
@@ -133,6 +133,6 @@ public class ScalarComplexOscillator extends AbstractOscillator implements IComp
|
||||
mPreviousInphase = previousInphase;
|
||||
mPreviousQuadrature = previousQuadrature;
|
||||
|
||||
return new ComplexSamples(iSamples, qSamples);
|
||||
return new ComplexSamples(iSamples, qSamples, timestamp);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -21,14 +21,13 @@ package io.github.dsheirer.dsp.oscillator;
|
||||
|
||||
import io.github.dsheirer.sample.complex.ComplexSamples;
|
||||
import io.github.dsheirer.vector.VectorUtilities;
|
||||
import java.util.Arrays;
|
||||
import jdk.incubator.vector.FloatVector;
|
||||
import jdk.incubator.vector.VectorSpecies;
|
||||
import org.apache.commons.math3.util.FastMath;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
||||
import java.util.Arrays;
|
||||
|
||||
/**
|
||||
* Complex oscillator that uses JDK17 SIMD vector operations to generate complex sample arrays.
|
||||
*
|
||||
@@ -145,9 +144,10 @@ public class VectorComplexOscillator extends AbstractOscillator implements IComp
|
||||
/**
|
||||
* Generates complex samples.
|
||||
* @param sampleCount number of samples to generate and length of the resulting float array.
|
||||
* @param timestamp of the first sample
|
||||
* @return generated samples
|
||||
*/
|
||||
@Override public ComplexSamples generateComplexSamples(int sampleCount)
|
||||
@Override public ComplexSamples generateComplexSamples(int sampleCount, long timestamp)
|
||||
{
|
||||
if(sampleCount % VECTOR_SPECIES.length() != 0)
|
||||
{
|
||||
@@ -184,6 +184,6 @@ public class VectorComplexOscillator extends AbstractOscillator implements IComp
|
||||
previousInphase.intoArray(mPreviousInphases, 0);
|
||||
previousQuadrature.intoArray(mPreviousQuadratures, 0);
|
||||
|
||||
return new ComplexSamples(iSamples, qSamples);
|
||||
return new ComplexSamples(iSamples, qSamples, timestamp);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user