mirror of
https://github.com/xdsopl/robot36.git
synced 2025-12-06 07:12:07 +01:00
fake pulses for faster synchronization
This commit is contained in:
parent
51c241b6fb
commit
e5ce8a5ee1
|
|
@ -153,17 +153,11 @@ public class Decoder {
|
||||||
return bestMode;
|
return bestMode;
|
||||||
}
|
}
|
||||||
|
|
||||||
private Mode findMode(int code) {
|
private Mode findMode(ArrayList<Mode> modes, int code) {
|
||||||
for (Mode mode : syncPulse5msModes)
|
for (Mode mode : modes)
|
||||||
if (mode.getCode() == code)
|
if (mode.getCode() == code)
|
||||||
return mode;
|
return mode;
|
||||||
for (Mode mode : syncPulse9msModes)
|
return null;
|
||||||
if (mode.getCode() == code)
|
|
||||||
return mode;
|
|
||||||
for (Mode mode : syncPulse20msModes)
|
|
||||||
if (mode.getCode() == code)
|
|
||||||
return mode;
|
|
||||||
return rawMode;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private void copyUnscaled() {
|
private void copyUnscaled() {
|
||||||
|
|
@ -326,12 +320,27 @@ public class Decoder {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (detectHeader(last9msSyncPulses[last9msSyncPulses.length - 1])) {
|
if (detectHeader(last9msSyncPulses[last9msSyncPulses.length - 1])) {
|
||||||
Mode visMode = findMode(visCode);
|
Mode mode;
|
||||||
if (visMode != rawMode) {
|
int[] pulses = null;
|
||||||
lastMode = visMode;
|
int[] lines = null;
|
||||||
lastSyncPulseIndex = last9msSyncPulses[last9msSyncPulses.length - 1] + leaderToneSamples + visCodeSamples + visMode.getFirstSyncPulseIndex();
|
if ((mode = findMode(syncPulse5msModes, visCode)) != null) {
|
||||||
lastScanLineSamples = visMode.getScanLineSamples();
|
pulses = last5msSyncPulses;
|
||||||
|
lines = last5msScanLines;
|
||||||
|
} else if ((mode = findMode(syncPulse9msModes, visCode)) != null) {
|
||||||
|
pulses = last9msSyncPulses;
|
||||||
|
lines = last9msScanLines;
|
||||||
|
} else if ((mode = findMode(syncPulse20msModes, visCode)) != null) {
|
||||||
|
pulses = last20msSyncPulses;
|
||||||
|
lines = last20msScanLines;
|
||||||
|
}
|
||||||
|
if (mode != null && pulses != null && lines != null) {
|
||||||
|
lastMode = mode;
|
||||||
|
lastSyncPulseIndex = pulses[pulses.length - 1] + leaderToneSamples + visCodeSamples + mode.getFirstSyncPulseIndex();
|
||||||
|
lastScanLineSamples = mode.getScanLineSamples();
|
||||||
lastFrequencyOffset = leaderFreqOffset;
|
lastFrequencyOffset = leaderFreqOffset;
|
||||||
|
for (int i = 0; i < pulses.length; ++i)
|
||||||
|
pulses[i] = lastSyncPulseIndex + (i - pulses.length + 1) * lastScanLineSamples;
|
||||||
|
Arrays.fill(lines, lastScanLineSamples);
|
||||||
int shift = lastSyncPulseIndex - scanLineReserveSamples;
|
int shift = lastSyncPulseIndex - scanLineReserveSamples;
|
||||||
if (shift > scanLineReserveSamples) {
|
if (shift > scanLineReserveSamples) {
|
||||||
lastSyncPulseIndex -= shift;
|
lastSyncPulseIndex -= shift;
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue