diff --git a/app/src/main/java/xdsopl/robot36/Decoder.java b/app/src/main/java/xdsopl/robot36/Decoder.java index 0b527d4..9e56330 100644 --- a/app/src/main/java/xdsopl/robot36/Decoder.java +++ b/app/src/main/java/xdsopl/robot36/Decoder.java @@ -357,7 +357,6 @@ public class Decoder { return false; if (scanLineStdDev(lines, mean) > scanLineToleranceSamples) return false; - float frequencyOffset = (float) frequencyOffsetMean(freqOffs); boolean pictureChanged = false; if (imageBuffer.line < 0 || imageBuffer.line >= imageBuffer.height) { Mode prevMode = lastMode; @@ -365,12 +364,15 @@ public class Decoder { pictureChanged = lastMode != prevMode || Math.abs(lastScanLineSamples - scanLineSamples) > scanLineToleranceSamples || Math.abs(lastSyncPulseIndex + scanLineSamples - pulses[pulses.length - 1]) > syncPulseToleranceSamples; + } else if (Math.abs(scanLineSamples - lastMode.getScanLineSamples()) > scanLineToleranceSamples) { + return false; } if (pictureChanged) { drawLines(0xff000000, 10); drawLines(0xff00ffff, 8); drawLines(0xff000000, 10); } + float frequencyOffset = (float) frequencyOffsetMean(freqOffs); if (pulses[0] >= scanLineSamples && pictureChanged) { int endPulse = pulses[0]; int extrapolate = endPulse / scanLineSamples;