mirror of
https://github.com/xdsopl/robot36.git
synced 2026-01-20 15:00:16 +01:00
let modes decide how much we can shift
This commit is contained in:
parent
e4b6e84d8b
commit
f809555ec9
|
|
@ -281,20 +281,23 @@ public class Decoder {
|
|||
imageBuffer.height = mode.getHeight();
|
||||
imageBuffer.line = 0;
|
||||
lastMode = mode;
|
||||
lastSyncPulseIndex = mode.getFirstSyncPulseIndex();
|
||||
lastSyncPulseIndex = leaderBreakIndex + leaderToneSamples + visCodeSamples + mode.getFirstSyncPulseIndex();
|
||||
lastScanLineSamples = mode.getScanLineSamples();
|
||||
lastFrequencyOffset = leaderFreqOffset;
|
||||
for (int i = 0; i < pulses.length; ++i)
|
||||
pulses[i] = lastSyncPulseIndex + (i - pulses.length + 1) * lastScanLineSamples;
|
||||
Arrays.fill(lines, lastScanLineSamples);
|
||||
int shift = leaderBreakIndex + leaderToneSamples + visCodeSamples;
|
||||
adjustSyncPulses(last5msSyncPulses, shift);
|
||||
adjustSyncPulses(last9msSyncPulses, shift);
|
||||
adjustSyncPulses(last20msSyncPulses, shift);
|
||||
int endSample = curSample;
|
||||
curSample = 0;
|
||||
for (int i = shift; i < endSample; ++i)
|
||||
scanLineBuffer[curSample++] = scanLineBuffer[i];
|
||||
int shift = lastSyncPulseIndex + mode.getBegin();
|
||||
if (shift > 0) {
|
||||
lastSyncPulseIndex -= shift;
|
||||
adjustSyncPulses(last5msSyncPulses, shift);
|
||||
adjustSyncPulses(last9msSyncPulses, shift);
|
||||
adjustSyncPulses(last20msSyncPulses, shift);
|
||||
int endSample = curSample;
|
||||
curSample = 0;
|
||||
for (int i = shift; i < endSample; ++i)
|
||||
scanLineBuffer[curSample++] = scanLineBuffer[i];
|
||||
}
|
||||
drawLines(0xff00ff00, 8);
|
||||
drawLines(0xff000000, 10);
|
||||
return true;
|
||||
|
|
@ -334,9 +337,8 @@ public class Decoder {
|
|||
}
|
||||
for (int i = pictureChanged ? 0 : lines.length - 1; i < lines.length; ++i)
|
||||
copyLines(mode.decodeScanLine(pixelBuffer, scratchBuffer, scanLineBuffer, scopeBuffer.width, pulses[i], lines[i], frequencyOffset));
|
||||
int reserve = (scanLineSamples * 3) / 4;
|
||||
int shift = pulses[pulses.length - 1] - reserve;
|
||||
if (shift > reserve) {
|
||||
int shift = pulses[pulses.length - 1] + mode.getBegin();
|
||||
if (shift > 0) {
|
||||
adjustSyncPulses(last5msSyncPulses, shift);
|
||||
adjustSyncPulses(last9msSyncPulses, shift);
|
||||
adjustSyncPulses(last20msSyncPulses, shift);
|
||||
|
|
|
|||
|
|
@ -15,6 +15,8 @@ public interface Mode {
|
|||
|
||||
int getHeight();
|
||||
|
||||
int getBegin();
|
||||
|
||||
int getFirstSyncPulseIndex();
|
||||
|
||||
int getScanLineSamples();
|
||||
|
|
|
|||
|
|
@ -72,6 +72,11 @@ public class PaulDon implements Mode {
|
|||
return verticalPixels;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getBegin() {
|
||||
return beginSamples;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getFirstSyncPulseIndex() {
|
||||
return firstSyncPulseIndex;
|
||||
|
|
|
|||
|
|
@ -65,6 +65,11 @@ public class RGBDecoder implements Mode {
|
|||
return verticalPixels;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getBegin() {
|
||||
return beginSamples;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getFirstSyncPulseIndex() {
|
||||
return firstSyncPulseIndex;
|
||||
|
|
|
|||
|
|
@ -41,6 +41,11 @@ public class RawDecoder implements Mode {
|
|||
return -1;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getBegin() {
|
||||
return 0;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getFirstSyncPulseIndex() {
|
||||
return -1;
|
||||
|
|
|
|||
|
|
@ -75,6 +75,11 @@ public class Robot_36_Color implements Mode {
|
|||
return verticalPixels;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getBegin() {
|
||||
return beginSamples;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getFirstSyncPulseIndex() {
|
||||
return firstSyncPulseIndex;
|
||||
|
|
|
|||
|
|
@ -73,6 +73,11 @@ public class Robot_72_Color implements Mode {
|
|||
return verticalPixels;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getBegin() {
|
||||
return beginSamples;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getFirstSyncPulseIndex() {
|
||||
return firstSyncPulseIndex;
|
||||
|
|
|
|||
Loading…
Reference in a new issue