mirror of
https://github.com/xdsopl/robot36.git
synced 2026-01-14 20:20:06 +01:00
extrapolate missing pulses
This commit is contained in:
parent
4cd2c86802
commit
a369d1754f
|
|
@ -90,19 +90,8 @@ public class MainActivity extends AppCompatActivity {
|
|||
return (int) Math.round(stdDev);
|
||||
}
|
||||
|
||||
private void processSyncPulse(int[] pulses, int[] lines, int index) {
|
||||
for (int i = 1; i < lines.length; ++i)
|
||||
lines[i - 1] = lines[i];
|
||||
lines[lines.length - 1] = index - pulses[pulses.length - 1];
|
||||
for (int i = 1; i < pulses.length; ++i)
|
||||
pulses[i - 1] = pulses[i];
|
||||
pulses[pulses.length - 1] = index;
|
||||
int prevPulseIndex = pulses[0];
|
||||
int nextPulseIndex = pulses[1];
|
||||
int scanLineSamples = lines[0];
|
||||
if (scanLineSamples == 0 || prevPulseIndex < 0 || nextPulseIndex <= 0)
|
||||
return;
|
||||
if (scanLineStdDev(lines) > scanLineToleranceSamples)
|
||||
private void processOneLine(int prevPulseIndex, int scanLineSamples) {
|
||||
if (prevPulseIndex < 0 || prevPulseIndex + scanLineSamples >= scanLineBuffer.length)
|
||||
return;
|
||||
for (int i = 0; i < scopeWidth; ++i) {
|
||||
int position = (i * scanLineSamples) / scopeWidth + prevPulseIndex;
|
||||
|
|
@ -110,7 +99,30 @@ public class MainActivity extends AppCompatActivity {
|
|||
int pixelColor = 0xff000000 | 0x00010101 * intensity;
|
||||
scopePixels[scopeWidth * curLine + i] = pixelColor;
|
||||
}
|
||||
int shift = nextPulseIndex;
|
||||
}
|
||||
|
||||
private void processSyncPulse(int[] pulses, int[] lines, int index) {
|
||||
for (int i = 1; i < lines.length; ++i)
|
||||
lines[i - 1] = lines[i];
|
||||
lines[lines.length - 1] = index - pulses[pulses.length - 1];
|
||||
for (int i = 1; i < pulses.length; ++i)
|
||||
pulses[i - 1] = pulses[i];
|
||||
pulses[pulses.length - 1] = index;
|
||||
if (lines[0] == 0)
|
||||
return;
|
||||
if (scanLineStdDev(lines) > scanLineToleranceSamples)
|
||||
return;
|
||||
if (pulses[0] >= lines[0]) {
|
||||
int lineSamples = lines[0];
|
||||
int endPulse = pulses[0];
|
||||
int extrapolate = endPulse / lineSamples;
|
||||
int firstPulse = endPulse - extrapolate * lineSamples;
|
||||
for (int pulseIndex = firstPulse; pulseIndex < endPulse; pulseIndex += lineSamples)
|
||||
processOneLine(pulseIndex, lineSamples);
|
||||
}
|
||||
for (int i = 0; i < lines.length; ++i)
|
||||
processOneLine(pulses[i], lines[i]);
|
||||
int shift = pulses[pulses.length - 1];
|
||||
adjustSyncPulses(last5msSyncPulses, shift);
|
||||
adjustSyncPulses(last9msSyncPulses, shift);
|
||||
adjustSyncPulses(last20msSyncPulses, shift);
|
||||
|
|
|
|||
Loading…
Reference in a new issue