From c6b9809a0956fdf86e45b832df9d6ec9e4e3bb83 Mon Sep 17 00:00:00 2001 From: Ahmet Inan Date: Fri, 3 May 2024 12:08:37 +0200 Subject: [PATCH] resist scan lines much different than the locked one --- app/src/main/java/xdsopl/robot36/Decoder.java | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) 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;