added option to reset decoder on header detection

This commit is contained in:
Ahmet Inan 2024-04-29 16:52:51 +02:00
parent daf4d88702
commit 214b9913a4
7 changed files with 24 additions and 0 deletions

View file

@ -348,6 +348,7 @@ public class Decoder {
lines = last20msScanLines;
}
if (mode != null && pulses != null && lines != null) {
mode.reset();
lastMode = mode;
lastSyncPulseIndex = mode.getFirstSyncPulseIndex();
lastScanLineSamples = mode.getScanLineSamples();

View file

@ -15,5 +15,7 @@ public interface Mode {
int getScanLineSamples();
void reset();
boolean decodeScanLine(PixelBuffer pixelBuffer, float[] scratchBuffer, float[] scanLineBuffer, int scopeBufferWidth, int syncPulseIndex, int scanLineSamples, float frequencyOffset);
}

View file

@ -70,6 +70,10 @@ public class PaulDon implements Mode {
return scanLineSamples;
}
@Override
public void reset() {
}
@Override
public boolean decodeScanLine(PixelBuffer pixelBuffer, float[] scratchBuffer, float[] scanLineBuffer, int scopeBufferWidth, int syncPulseIndex, int scanLineSamples, float frequencyOffset) {
if (syncPulseIndex + beginSamples < 0 || syncPulseIndex + endSamples > scanLineBuffer.length)

View file

@ -63,6 +63,10 @@ public class RGBDecoder implements Mode {
return scanLineSamples;
}
@Override
public void reset() {
}
@Override
public boolean decodeScanLine(PixelBuffer pixelBuffer, float[] scratchBuffer, float[] scanLineBuffer, int scopeBufferWidth, int syncPulseIndex, int scanLineSamples, float frequencyOffset) {
if (syncPulseIndex + beginSamples < 0 || syncPulseIndex + endSamples > scanLineBuffer.length)

View file

@ -41,6 +41,10 @@ public class RawDecoder implements Mode {
return -1;
}
@Override
public void reset() {
}
@Override
public boolean decodeScanLine(PixelBuffer pixelBuffer, float[] scratchBuffer, float[] scanLineBuffer, int scopeBufferWidth, int syncPulseIndex, int scanLineSamples, float frequencyOffset) {
if (syncPulseIndex < 0 || syncPulseIndex + scanLineSamples > scanLineBuffer.length)

View file

@ -73,6 +73,11 @@ public class Robot_36_Color implements Mode {
return scanLineSamples;
}
@Override
public void reset() {
lastEven = false;
}
@Override
public boolean decodeScanLine(PixelBuffer pixelBuffer, float[] scratchBuffer, float[] scanLineBuffer, int scopeBufferWidth, int syncPulseIndex, int scanLineSamples, float frequencyOffset) {
if (syncPulseIndex + beginSamples < 0 || syncPulseIndex + endSamples > scanLineBuffer.length)

View file

@ -71,6 +71,10 @@ public class Robot_72_Color implements Mode {
return scanLineSamples;
}
@Override
public void reset() {
}
@Override
public boolean decodeScanLine(PixelBuffer pixelBuffer, float[] scratchBuffer, float[] scanLineBuffer, int scopeBufferWidth, int syncPulseIndex, int scanLineSamples, float frequencyOffset) {
if (syncPulseIndex + beginSamples < 0 || syncPulseIndex + endSamples > scanLineBuffer.length)