From acd7a59bc9b455246168883a7cb8f8f3722d7db4 Mon Sep 17 00:00:00 2001 From: Ahmet Inan Date: Wed, 24 Apr 2024 17:02:42 +0200 Subject: [PATCH] extrapolate parity if we cannot trust the separator --- app/src/main/java/xdsopl/robot36/Robot_36_Color.java | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/app/src/main/java/xdsopl/robot36/Robot_36_Color.java b/app/src/main/java/xdsopl/robot36/Robot_36_Color.java index b5e7bcc..3fa021e 100644 --- a/app/src/main/java/xdsopl/robot36/Robot_36_Color.java +++ b/app/src/main/java/xdsopl/robot36/Robot_36_Color.java @@ -17,6 +17,7 @@ public class Robot_36_Color implements Mode { private final int separatorBeginSamples; private final int chrominanceBeginSamples; private final int endSamples; + private boolean lastEven; @SuppressWarnings("UnnecessaryLocalVariable") Robot_36_Color(int sampleRate) { @@ -66,7 +67,11 @@ public class Robot_36_Color implements Mode { for (int i = 0; i < separatorSamples; ++i) separator += scanLineBuffer[prevPulseIndex + separatorBeginSamples + i]; separator /= separatorSamples; + separator -= frequencyOffset; boolean even = separator < 0; + if (separator < -1.1 || separator > -0.9 && separator < 0.9 || separator > 1.1) + even = !lastEven; + lastEven = even; lowPassFilter.cutoff(evenBuffer.length, 2 * luminanceSamples, 2); lowPassFilter.reset(); for (int i = prevPulseIndex + beginSamples; i < prevPulseIndex + endSamples; ++i)