Pull request fixes: Decoder.process() added newLinesPresent

This commit is contained in:
Marek Ossowski 2025-08-21 00:04:27 +02:00
parent 09d5f6dc5a
commit 8173f147d8

View file

@ -411,10 +411,8 @@ public class Decoder {
return true; return true;
} }
/**
@return true if new lines present
*/
public boolean process(float[] recordBuffer, int channelSelect) { public boolean process(float[] recordBuffer, int channelSelect) {
boolean newLinesPresent = false;
boolean syncPulseDetected = demodulator.process(recordBuffer, channelSelect); boolean syncPulseDetected = demodulator.process(recordBuffer, channelSelect);
int syncPulseIndex = currentSample + demodulator.syncPulseOffset; int syncPulseIndex = currentSample + demodulator.syncPulseOffset;
int channels = channelSelect > 0 ? 2 : 1; int channels = channelSelect > 0 ? 2 : 1;
@ -428,25 +426,28 @@ public class Decoder {
if (syncPulseDetected) { if (syncPulseDetected) {
switch (demodulator.syncPulseWidth) { switch (demodulator.syncPulseWidth) {
case FiveMilliSeconds: case FiveMilliSeconds:
return processSyncPulse(syncPulse5msModes, last5msFrequencyOffsets, last5msSyncPulses, last5msScanLines, syncPulseIndex); newLinesPresent = processSyncPulse(syncPulse5msModes, last5msFrequencyOffsets, last5msSyncPulses, last5msScanLines, syncPulseIndex);
break;
case NineMilliSeconds: case NineMilliSeconds:
leaderBreakIndex = syncPulseIndex; leaderBreakIndex = syncPulseIndex;
return processSyncPulse(syncPulse9msModes, last9msFrequencyOffsets, last9msSyncPulses, last9msScanLines, syncPulseIndex); newLinesPresent = processSyncPulse(syncPulse9msModes, last9msFrequencyOffsets, last9msSyncPulses, last9msScanLines, syncPulseIndex);
break;
case TwentyMilliSeconds: case TwentyMilliSeconds:
leaderBreakIndex = syncPulseIndex; leaderBreakIndex = syncPulseIndex;
return processSyncPulse(syncPulse20msModes, last20msFrequencyOffsets, last20msSyncPulses, last20msScanLines, syncPulseIndex); newLinesPresent = processSyncPulse(syncPulse20msModes, last20msFrequencyOffsets, last20msSyncPulses, last20msScanLines, syncPulseIndex);
break;
default: default:
return false; break;
} }
} } else if (handleHeader()) {
if (handleHeader()) newLinesPresent = true;
return true; } else if (currentSample > lastSyncPulseIndex + (currentScanLineSamples * 5) / 4) {
if (currentSample > lastSyncPulseIndex + (currentScanLineSamples * 5) / 4) {
copyLines(currentMode.decodeScanLine(pixelBuffer, scratchBuffer, scanLineBuffer, scopeBuffer.width, lastSyncPulseIndex, currentScanLineSamples, lastFrequencyOffset)); copyLines(currentMode.decodeScanLine(pixelBuffer, scratchBuffer, scanLineBuffer, scopeBuffer.width, lastSyncPulseIndex, currentScanLineSamples, lastFrequencyOffset));
lastSyncPulseIndex += currentScanLineSamples; lastSyncPulseIndex += currentScanLineSamples;
return true; newLinesPresent = true;
} }
return false;
return newLinesPresent;
} }
public void setMode(String name) { public void setMode(String name) {